2

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

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

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

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

4 回答 4

1

这就是全部。

computeResult(coursework_grade,exam_grade);

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

于 2013-11-05T12:24:16.587 回答
0

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

System.out.println("Your grades are: ");
computeResult(coursework_grade,exam_grade);
于 2013-11-05T12:21:25.293 回答
0

使数组成为全局的。将它们排除在外public static void main(String[] args),它将是全球性的。

于 2016-09-01T03:46:41.347 回答
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变量,直接在里面声明数组的大小。不必要地增加变量计数是没有意义的。
于 2021-05-22T09:45:36.253 回答