繁体   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