簡體   English   中英

將數組作為參數傳遞給方法

[英]Passing an array as a parameter to a method

這是我完成的程序:

import java.util.*;

public class Sclad {

public static void vavediMasiv(int col[], double cenaE[], double cenaD[]){
    Scanner sc = new Scanner(System.in);
    for (int i = 1; i < col.length; i++)
    {
        System.out.println("Molq vuvedete kolichestvoto ot produkt nomer " + i);
        col[i] = sc.nextInt();
        System.out.println("Kolichestvoto na produkta zadadeno kato: " + col[i]);
    }

    for (int i = 1; i < cenaE.length; i++)
    {
        System.out.println("Molq vuvedete cenata na edro na produkt nomer " + i);
        cenaE[i] = sc.nextDouble();
        System.out.println("Cenata na produkta na edro zadadeno kato: " + cenaE[i]);
    }

    for (int i = 1; i < cenaD.length; i++)
    {
        System.out.println("Molq vuvedete cenata na drebno na produkt " + i);
        cenaD[i] = sc.nextDouble();
        System.out.println("Cenata na produkta na drebno zadadeno kato: " + cenaD[i]);
    }

}
public static void calcPechalba(){
    for (int i = 1; i < col.length; i++)
        System.out.println("KUR");
}


public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    System.out.println("Vavedete broi na stokite prisustvashti v sklada...");
    int m = sc.nextInt();
    System.out.println("Vie izbrahte " + m + " za kolichestvo na stokite.");

    int col[] = new int[m+1];
    double cenaE[] = new double[m+1];
    double cenaD[] = new double[m+1];
    vavediMasiv(col[m+1], cenaE[m+1], cenaD[m+1]); // I GET AN ERROR HERE SAYING The method vavediMasiv(int[], double[], double[]) in the type Sclad is not applicable for the arguments (int, double, double)
}
}

我已經評論了有問題的部分。 我不明白為什么它不接受作為參數。 我已經嘗試了所有方法,但仍然無法接受數組。 我可以做些什么來解決此問題,或者至少可以妥協並以其他方式解決?

您正在傳遞它的int和double值。 要將其傳遞給int和double數組,您需要執行以下操作:

vavediMasiv(col, cenaE, cenaD);

例如,在這里向其傳遞cenaD數組的m + 1元素,而不是數組本身。

cenaD[m+1]

看...您已定義

public static void vavediMasiv(int col[], double cenaE[], double cenaD[]) // expecting and accepting whole arrays as arguments.

而您正在使用:

 vavediMasiv(col[m+1], cenaE[m+1], cenaD[m+1]); // you are passing individual values of arrays instead of whole array. 

您必須使用:

vavediMasiv(col, cenaE, cenaD); 

你應該通過整個對象

vavediMasiv(col, cenaE, cenaD);

您在數組中而不是實際數組中傳遞值。 這就是為什么您將錯誤int cant be converted to int[]原因,因為col[m +1]col數組中的int值。 與其他兩個數組相同。

vavediMasiv(col[m+1], cenaE[m+1], cenaD[m+1])

所有上述都在數組的值。 你要

vavediMasiv(col, cenaE, cenaD); 

您可能還希望將數組傳遞給此方法,以消除此錯誤

public static void calcPechalba(int[] col){    <------
    for (int i = 1; i < col.length; i++)
        System.out.println("KUR");
}

您正在嘗試將( int double double )參數傳遞給簽名表示該方法接受( int double double )數組的方法。

查看您的源代碼,您只需要更改

  vavediMasiv(col[m+1], cenaE[m+1], cenaD[m+1]);

撥電至:

  vavediMasiv(col, cenaE, cenaD);

您還應注意,由於沒有局部變量col ,因此以下方法將無法編譯:

public static void calcPechalba(){
   for (int i = 1; i < col.length; i++)
    System.out.println("KUR");
   }

抱歉,我無法理解您的方法的邏輯流程以提供更好的幫助。

BR。

您的方法vavediMasiv(int col [],double cenaE [],double cenaD [])期望使用int array,double array和double array類型的三個參數。 在傳遞int時,將double和double用作參數。 這就是為什么它會出錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM