0

メイン メソッド内で別のクラスのメソッドを使用しようとしていますが、エラーが発生します。クラス内のメソッドを特定の型に適用できないことを教えてくれます。

public class studentclass {
public void inputloop(String[] args){

    Scanner scan = new Scanner(System.in);
    String[][] student = new String[10][];
    Double[][] results = new Double[10][];
    Double[] total = new Double[10];


    String tableln = "";

   for(int index = 0; index < student.length; index++){
    System.out.println("\nPlease enter student " + (index+1) + "'s details");
    String userinput = scan.nextLine();
    student[index] = userinput.split(",");
    results[index] = new Double[4];

    results[index][0] = Double.parseDouble(student[index][2]); 
    results[index][1] = Double.parseDouble(student[index][3]);
    results[index][2] = Double.parseDouble(student[index][4]);
    results[index][3] = Double.parseDouble(student[index][5]);
    total[index] = (results[index][0]*0.1+results[index][1]*0.4+
                    results[index][2]*0.2+results[index][3]*0.3);

    System.out.println("\nStudent name\tFAN \t\tResult1\tResult2\tResult3\tResult4\tTotal");
    tableln = tableln + "\n" + student[index][0] + "\t" + student[index][1] + "\t"
             + results[index][0] + "\t" + results[index][1] + "\t" + results[index][2] + "\t"
             + results[index][3] + "\t" + total[index];
    System.out.println(tableln);
    }
}

次に、メイン メソッドでこれを入力します。

    public static void main(String[] args) {
    studentclass info = new studentclass();
    info.inputloop();
    }

「クラス Studentclass のメソッド inputloop は、指定された型に適用できません。必要な String[] には引数が見つかりませんでした」と表示されます。私を助けてください。ありがとう

4

4 に答える 4

3

メソッドのシグネチャは次のとおりです。

public void inputloop(String[] args)

メソッドに文字列の配列を渡す必要があります。

info.inputloop(someStringArray);

詳細については、これを参照してください。

括弧内のパラメーター リスト — 入力パラメーターのカンマ区切りのリストで、前にデータ型があり、括弧 () で囲まれています。パラメーターがない場合は、空の括弧を使用する必要があります。

このパラメーターを使用しているとは思わないので、メソッドの署名を次のように変更するだけです。

public void inputloop()

これで、あなたが行ったように有効な呼び出しになります。

于 2013-09-08T07:14:20.623 に答える
1

メソッド宣言は、文字列の配列への参照が渡されることを期待していることを示しています。

public void inputloop(String[] args)

したがって、 type の値を渡した場合にのみ、現在の形式でメソッドを呼び出すことができますString[]

ただし、実際にはメソッド内のどこでも使用していないため、宣言を次のように変更することをお勧めします。 args

public void inputloop()

Java チュートリアル のメソッドの定義に関するセクションを読むか、Java の優れた入門書でメソッドの宣言 (および呼び出し) に関するセクションを見つけることをお勧めします。現在、Java を学んでいる本を持っていない場合は、すぐに入手することをお勧めします。スタック オーバーフローは特定の質問に答えるには優れていますが、基本的な概念を学ぶには適していません。メソッドの宣言と呼び出しには、この特定の質問に対する回答よりも多くのことがありすべてを少しずつ学習します。時間は非常に非効率的です。

于 2013-09-08T07:15:59.053 に答える
0

inputloopメソッドが文字列の配列を取得する必要があるときに使用しようとしています。

コマンドラインをそれに渡すという考えだったと思いargsます。行う:

public static void main(String[] args)
{
   studentclass info = new studentclass();
   info.inputloop(args);
}
于 2013-09-08T07:14:57.927 に答える
0

このようにしてみてください

public static void main(String[] args) {
    studentclass info = new studentclass();
    String[] student ={"John", "Mark"};
    info.inputloop(student);
    }
} 

また

入力引数が使用されないため、 public void inputloop(String[] args) を public void inputloop() に変更できます

于 2013-09-08T07:20:37.933 に答える