0

変な質問かもしれませんが、本当に行き詰まっています。私は2つのクラスを持つ単純なプログラムを持っています。クラスAからクラスBに配列を渡す必要があります。実行しましたが、プログラムの実行方法がわからないため、テストできません。実行をクリックすると、1 つのクラスだけが開始されました。プログラム全体をテストしたかったのですが、その方法が見つかりません。クラスAを実行してからクラスBを実行するコマンドまたは何かがありますか? これがないと、配列 (クラス A) の値が読み込まれないため、クラス B をテストできません:/ 意味を理解していただければ幸いです。

エクリプスを使用しています。

ありがとう!

クラス MarkCalculator

import java.util.Scanner;

public class MarkCalculator {

public static int[] exam_grade = new int[6];
public static int[] coursework_grade = new int[6];
public static int[] coursework_weight = new int[2];
public static int[] module_points = new int[6];
public static String module_grade, holder;
public static int counter1 = 0, counter2 = 0;

public static void main(String[] args) {

Scanner input = new Scanner (System.in);

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

    System.out.printf(i+1+". Modelue"+" Enter grade of exam:");

    while (!input.hasNextInt() ){

        System.out.printf("Enter only numbers! Enter grade of your exam: ");
        input.next();
    }

    exam_grade[i]=input.nextInt();

    System.out.printf(i+1+". Modelue"+" Enter grade of coursework:");

    while (!input.hasNextInt()){

        System.out.printf("Enter only numbers! Enter grade of your coursework: ");
        input.next();
    }

    coursework_grade[i]=input.nextInt(); 
}


computeMark(coursework_grade, exam_grade, module_points);


// calculate module grade
for(int i = 0 ;i < 3; i++){

    if (module_points[i] < 35){
        System.out.println(i+1+".Module: Fail");
    }

    else if (module_points[i] >= 35 && module_points[i] <= 40){
        System.out.println(i+1+".Module: Pass by compensation");
        counter1++;
    }

    else {
        System.out.println(i+1+".Module: Pass");
        counter2++;
    }


}

holder = computeResult(module_points, counter1,counter2, module_grade);
System.out.println("Your stage result is: "+ holder);


input.close();
}



public static int[] computeMark (int coursework_grade[], int exam_grade[], int module_points[]){

coursework_weight[0]= 50;
coursework_weight[1]= 50;

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

    if (coursework_grade[i] < 35 || exam_grade[i] < 35){

        module_points[i]=(coursework_grade[i]*coursework_weight[0] + (exam_grade[i]*(100-coursework_weight[1])))/100;

        if (module_points[i] > 35){
            module_points[i] = 35; } 

        else {
            module_points[i] = 0;
        }

    }

    else {
        module_points[i]=((coursework_grade[i]*coursework_weight[0] + (exam_grade[i]*(100-coursework_weight[1])))/100); }


}

return module_points;       
}

public static String computeResult (int module_points[], int counter1, int                 counter2,     String module_grade ){

int sum = 0;
double average = 0;

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

    sum = sum + module_points[i];
    average = sum / 3;
}

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


    if (counter2 == 3){
        module_grade = "Pass";
    }

    else if (average >= 40 && counter1 <= 2) {
        module_grade = "Pass by compensation";
    }

    else {
        module_grade = "Fail";
    }



}

return module_grade;






}



}

クラス StudentChart

public class StudentChart {

public static void main(String[] args) {


    for (int i = 0; i < 3; i++){
        System.out.println(MarkCalculator.coursework_weight);
    }




}

}
4

2 に答える 2

3

必要なmainメソッドは 1 つだけです。

class A {
    String s;

    public A(String s){
        this.s = s;
    }
}

public class B {
    public static void main(String[] args){
        A a = new A("Hello");
        System.out.println(a.s + " world!");
    }
}

class Bメソッドを持つアプリケーションプログラムになりますmain。から値を取得しますclass A。 の値を使用していても、アプリが機能class Aするために実行する必要はありません。class Bclass A

于 2013-11-13T19:00:20.087 に答える
1

別のクラスで別の名前のメソッドを使用して、メソッドからそのメソッドを呼び出すことができますmain

ただし、それを呼び出さないでください。これpublic static void mainは、スタンドアロン プログラムにのみ使用する必要があります。メソッドの前に他のコードを実行する必要がある場合、そのメソッドを Java プログラムのメイン メソッドにするべきではありません。

于 2013-11-13T19:15:39.037 に答える