2

正解を返さないJavaプログラムがあり、その理由がわかりません。コードは次のとおりです。

public class hello {
    public static void main(String[] args) {
        int a =5;
        doubleNumbers(a);
        System.out.println(" 5 doubled is:"+a);
    }

    private static void doubleNumbers(int a) {
        a = 5*2;
    }
}

これは、helloWorldに続く最初のJavaプログラムです。

4

8 に答える 8

6

Javaは値渡しです。つまり、関数に渡される変数は関数の外部では変更されません。

これは宿題なので、解決策は示しませんが、計算値を返すように指示します。

于 2012-05-30T12:12:16.347 に答える
3

メソッドから何も返さない

に変更します

 private static int doubleNumbers(int a) { 
return a * 2; 
 } 
于 2012-05-30T12:11:45.647 に答える
1

計算結果を返すようにメソッドを変更するとdoubleNumbers、次のようになります。

private static void doubleNumbers(int a) {
    return a*2;
}

次に、mainメソッドの行を変更します。

int a = 5;
a = doubleNumbers(a);

また、doubleNumbers元の実装では10のみが返されます。a上記のコードが示すように、渡した変数を使用する必要があります。

于 2012-05-30T12:14:20.443 に答える
1

コードには2つの問題があります。まず、doubleNumbersメソッドを変更して何かを返す必要があります。次に、printステートメントを戻り値を出力する場所に変更する必要があります。

たとえば(擬似コードでは、それについて考える必要があります!):

method doCalculation{
....
return calculated answer
}

main{
....
Print(doCalculation)
}
于 2012-05-30T12:19:54.577 に答える
0

参照ではなく値によって渡されるJavaのプリミティブ型。参照によって渡すにはObject-typeが必要です。これを試してください。

 private static void doubleNumbers(Integer a) {
a = a*2;
 }
于 2012-05-30T12:13:39.290 に答える
0

2つの明らかな問題があります:

  1. doubleNumbers()の戻り値を変数に割り当てません。
  2. doubleNumbers()値を返しません(に置き換えvoidますint
于 2012-05-30T12:14:15.020 に答える
0
public class hello {


     public static void main(String[] args) 
     {
       int a =5;
       a = doubleNumbers(a);

       System.out.println(" 5 doubled is:"+a);

     }

     private static int doubleNumbers(int a) {
       return a*2;
     }

}

各変数にはコンテキストがあり、デフォルトではそれを使用する関数に制限されています。

a関数内のあなたdoubleNumbers()は最初のものと同じではありません。

a結果を返し、それを元の変数に割り当てる必要があります

于 2012-05-30T12:14:37.453 に答える
0

より良い方法は、double Numbers()メソッドをからに変更voidしてint、それを返すことができるようにすることです。また、単に印刷するaのではなく、メソッドを印刷すると、が2倍になりaます。また、Scannerを追加したので、プログラムは5を2倍にするだけでなく、入力した任意の数になります。

public class Hello {
  public static void main(String[] args) {
    Scanner myScn = new Scanner(System.in);
    System.out.println("Please enter a number: ");
    int a = myScn.nextInt();
    //doubleNumbers(a);
    System.out.println(a+ " doubled is:"+doubleNumbers(a));

  }

  private static int doubleNumbers(int a) {
    int x = a*2;
        return x;
  }
}
于 2012-05-30T14:20:12.683 に答える