1
public static void main(String[] args) {
    //call for input
    System.out.println("Please Enter a 3-digit number..");
    Scanner in = new Scanner(System.in);
    int[] num = new int[3];
    for (int i = 0; i < num.length; i++) {
        int val = in.nextInt();
        num[i] = val;
    }

    System.out.println("The Sum of the numbers is " + sumNums);
    System.out.println("The Reverse of the numbers is " + reverseNums);

}

public int sumNums(int x) {
    return num[0] + num[1] + num[2];
}

public in reverse(int x) {
    return num[2] + num[1] + num[0];
}  

分割された数字を追​​加するいくつかのメソッドを作成しようとしています。たとえば、123 を入力すると、1+2+3=6 になりますが、「シンボルが見つかりません」というメッセージが表示され続けます。また、入力を分割する方法が最も効率的ですか?

4

4 に答える 4

0

私があなたなら、効率について心配することはありません。現在、あなたのプログラムは、それを必要とするメソッドへの入力を取得していません。

ここでの 2 つの主な事柄:

  • あなたのメソッドは ではないstaticので、あなたのクラスのインスタンスなしで の内部でそれらを呼び出すことはできません(とりあえずmain()呼び出しましょう)。TestClass

  • そもそも、ユーザーから取得した情報をメソッドに渡すことはありません。これが、「シンボルが見つかりません」に遭遇する理由ですnum。これらのメソッドのスコープには定義がありません。

少なくとも後者の問題を解決するには、単一の int ではなく int 配列を受け入れるようにメソッドのシグネチャを変更する必要があります。

public int sumNums(int[] num) {
    return num[0] + num[1] + num[2];
}

public int reverse(int[] num) {
    return num[2] + num[1] + num[0];
}

ただし、加算は交換可能であるため、これら2つの方法の結果がまったく異なるとは思いません。

オブジェクトのインスタンス化とメソッドの呼び出しについては、演習として読者に任せます。

于 2013-08-27T02:54:21.097 に答える
0

実装にはいくつかの問題があります。

で、printlnメソッド呼び出しを行っていません

System.out.println("The Sum of the numbers is " + sumNums);
System.out.println("The Reverse of the numbers is " + reverseNums );

する必要があります

System.out.println("The Sum of the numbers is " + sumNums(0));
System.out.println("The Reverse of the numbers is " + reverseNums(0) );

また、現在のsumNumsおよびreverseNumsメソッドは、渡されたパラメーターを使用していないため、おそらく削除される可能性があります...

于 2013-08-27T02:40:21.963 に答える