如何在另一种方法中使用数组?

时间:2013-11-05 12:19:20

标签: java arrays

我发现在另一种方法中使用数组形式一个方法的问题。

在第一种方法中,我从用户那里获取输入并将数据保存到两个数组中。

在第二种方法中,我必须从数组中显示这些信息。

import java.util.Scanner;

public class MarkCalculator {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        computeMark();
        computeResult();
    }

    public static void computeMark ()
    {

        Scanner exam = new Scanner (System.in);
        Scanner coursework = new Scanner (System.in);

        int num = 12;
        int[] exam_grade = new int[num];
        int[] coursework_grade = new int[num];

        for (int i=0+1; i<3; i++){

           System.out.printf(i+". Modelue"+" Enter grade of exam:");
           exam_grade[i]=exam.nextInt();

           System.out.printf(i+". Modelue"+" Enter grade of coursework:");
           coursework_grade[i]=coursework.nextInt();   
        }

        System.out.println();   
        System.out.println();
        System.out.println("Your grades are: ");


    }


    public static void computeResult (int[] coursework_grade, int[] exam_grade)
    {

        for (int i = 0+1; i<3; i++) {

            System.out.println(i+". Module: "+ "Exam: "+exam_grade[i]+" Coursework: "+coursework_grade[i]);

        }

    }



}

问题是,我不知道如何将数据从数组传递给第二种方法。我找不到任何解决方案。有人可以帮我吗?

感谢。

4 个答案:

答案 0 :(得分:1)

这就是全部。

computeResult(coursework_grade,exam_grade);

您可以像使用基本类型一样将数组或任何对象传递给方法。 但是请记住,如果在被调用方法中更改了对象的状态,则传递对象时,它会反映在对象本身中,并且该对象的所有引用都将包含受影响的对象。

答案 1 :(得分:0)

在以下方法之后添加对方法的调用:

System.out.println("Your grades are: ");
computeResult(coursework_grade,exam_grade);

答案 2 :(得分:0)

制作数组,全局。它们在public static void main(String[] args)之外,它将是全球性的。

答案 3 :(得分:0)

您可以使用以下两种方法访问数组:

  1. 使数组全局化。
  2. 在主类中声明数组并将它们传递到单独的方法中。

在主类中声明数组并将其传递到单个方法中的代码:

import java.util.Scanner;

public class MarkCalculator {

public static void main(String[] args) {
    int[] exam_grade = new int[12];
    int[] coursework_grade = new int[12];
    computeMark(coursework_grade,exam_grade);
    computeResult(coursework_grade,exam_grade);
}

public static void computeMark (int[] coursework_grade, int[] exam_grade)
{
    Scanner input = new Scanner (System.in);
    for (int i=0+1; i<3; i++){
       System.out.printf(i+". Modelue"+" Enter grade of exam:");
       exam_grade[i]=input.nextInt();

       System.out.printf(i+". Modelue"+" Enter grade of coursework:");
       coursework_grade[i]=input.nextInt();   
    }
    System.out.println();   
    System.out.println();
    System.out.println("Your grades are: ");
}

public static void computeResult (int[] coursework_grade, int[] exam_grade)
{

    for (int i = 0+1; i<3; i++) {
       System.out.println(i+". Module: "+ "Exam: "+exam_grade[i]+" Coursework: "+coursework_grade[i]);
    }
  }
}

在全局区域声明数组的代码:

import java.util.Scanner;

public class MarkCalculator {
static int[] exam_grade = new int[12];
static int[] coursework_grade = new int[12];
public static void main(String[] args) {
    computeMark();
    computeResult();
}

public static void computeMark ()
{
    Scanner input = new Scanner (System.in);
    for (int i=0+1; i<3; i++){
       System.out.printf(i+". Modelue"+" Enter grade of exam:");
       exam_grade[i]=input.nextInt();

       System.out.printf(i+". Modelue"+" Enter grade of coursework:");
       coursework_grade[i]=input.nextInt();   
    }
    System.out.println();   
    System.out.println();
    System.out.println("Your grades are: ");
}

public static void computeResult ()
{
    for (int i = 0+1; i<3; i++) {
        System.out.println(i+". Module: "+ "Exam: "+exam_grade[i]+" Coursework: "+coursework_grade[i]);
    }
  }
}

建议:

  1. 无需使用两个扫描仪变量。
  2. 不需要使用num变量,直接在里面声明数组的大小。不必要地增加变量计数是没有意义的。