将数组作为参数传递给方法

时间:2014-01-19 13:01:13

标签: java arrays

这是我完成的一半程序:

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)
}
}

我评论了有问题的部分。我不明白为什么它不接受作为参数。我已经尝试了一切,但它仍然不接受数组。我该怎么做才能解决这个问题,或者至少要妥协它并以另一种方式做到这一点?

6 个答案:

答案 0 :(得分:3)

你传递int和double值。要传递int和double数组,你需要这样做:

vavediMasiv(col, cenaE, cenaD);

例如,在这里你传递的是cenaD数组的m + 1元素,而不是数组本身。

cenaD[m+1]

答案 1 :(得分: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); 

答案 2 :(得分:0)

你应该传递整个对象

vavediMasiv(col, cenaE, cenaD);

答案 3 :(得分:0)

您在数组中传递值而不是实际数组。这就是您收到错误int cant be converted to int[]的原因,因为col[m +1]int数组中的col值。与其他两个数组相同。

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

以上所有都是 in 数组中的值。你想要

vavediMasiv(col, cenaE, cenaD); 

您也可能想要将数组传递给此方法,以消除此错误

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

答案 4 :(得分:0)

您正尝试将(int double double)参数传递给一个签名表示接受(int double {{数组的方法1}})。

查看源代码,您只需要更改

double

致电:

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

您还应注意,由于没有局部变量 vavediMasiv(col, cenaE, cenaD); ,因此以下方法无法编译:

col

很抱歉,但我无法理解你的方法逻辑流程,以便更好地拍摄。

BR。

答案 5 :(得分:0)

你的方法vavediMasiv(int col [],double cenaE [],double cenaD [])期望三个类型为int数组,双数组和双数组的参数。当你传递int,double和double作为参数时。这就是它给出错误的原因。