2016-10-01 3 views
1

これは私の最初のJavaプロジェクトの1つで、ミニ電卓を作ろうとしており、今は追加作業をしています。ユーザーがJavaで入力した回数をスキャナに問い合わせる

私がしたいことは、追加する数字の数を入力した後、すべての数字を入力した後、入力したすべての数字を取得する必要があるということです。ここで

は、これまでに動作しないの加算部分です:

private static void Addition() { //I already added the Scanner plugin 
     System.out.println("How many numbers would you like to add?"); 

     Scanner adds = new Scanner(System.in); 
     int addsput = adds.nextInt(); 

     Scanner numa = new Scanner(System.in); 

     for(int addloop=1; addloop>addsput; addloop++) { 

      int numaput = adds.nextInt(); 
      //somehow I want to get all the numbers 

     } 

    //Here I want to add all the numbers they typed 
    } 

だから私はあなたがアイデアを得る願っています。どんな助けも素晴らしいだろう。なぜなら、私はこれを理解するのに約1時間を探していたからだ。ありがとう。

+0

「doesnt work」とはどういう意味ですか?それは何をするためのものか?それは何を期待していますか? 「あなたがそのアイデアを得ることを願っている」と言うだけでは不十分です。 – nhouser9

+0

なぜ2台のスキャナがありますか? – Li357

+0

私はそれが何をしようとしているか説明します:P lol – MattGotJava

答えて

1

2つのオプションがあります。値を配列に読み込むか、値を読み取るときに合計を探します。

は1つのだけですScannerオブジェクトを必要とし、あなたのforループはいくつかの問題だった:配列を使用して

private static void addition() { 
    Scanner input = new Scanner(System.in); 

    System.out.println("How many numbers would you like to add?"); 
    int amountNumbers = input.nextInt(); 

    int sum = 0; 
    for (int counter = 0; counter < amountNumbers; counter++) { 
     sum += input.nextInt(); 
    } 

    System.out.println("Sum: " + sum); 
} 

を:ここで

private static void addition() { 
    Scanner input = new Scanner(System.in); 

    System.out.println("How many numbers would you like to add?"); 
    int[] numbers = new int[input.nextInt()]; 

    for (int index = 0; index < numbers.length; index++) { 
     numbers[index] = input.nextInt(); 
    } 

    int sum = 0; 
    for (int index = 0; index < numbers.length; index++) { 
     sum += numbers[index]; 
    } 

    System.out.println("Sum: " + sum); 
} 

は、使用してそれを行うために、より高度な方法でありますIntStream from Java 8:

private static void addition() { 
    Scanner input = new Scanner(System.in); 

    System.out.println("How many numbers would you like to add?"); 
    int amountNumbers = input.nextInt(); 

    int sum = IntStream.generate(input::nextInt) 
         .limit(amountNumbers) 
         .sum(); 

    System.out.println("Sum: " + sum); 
} 
+0

ありがとう!それはたくさんの助けになりました。すぐに配列について学ぶでしょう。これまで本当に必要なことは決してなかったからです。 – MattGotJava

+0

@MattGotJava私は配列を使ってそれを行う方法と、より高度な方法(それをやる方法)を示すために編集を行いました。 – 4castle

0

変更することをおすすめします。 1台のスキャナーが必要です。また、合計に加算する場合は、ループの前に変数を作成すると、同じ行の合計に入力を追加するだけで済みます。

また、<記号に>記号が混じっています。変数addloopがユーザーが追加する数値を入力したいと思った回数だけインクリメントされるまで、ループを進めたい。したがって、ループは、ユーザーが入力した番号に達するまで続行する必要があります。

System.out.println("How many numbers would you like to add?"); 

    Scanner adds = new Scanner(System.in); 
    int addsput = adds.nextInt(); 

    int sum = 0; 

    for(int i = 0; i < addsput; i++){ 
     sum += adds.nextInt(); 
    } 

    System.out.println(sum); 
関連する問題