[英]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.