2016-10-01 32 views
1

這是我的第一個Java項目之一,我試圖製作一個迷你計算器,現在我正在開發另外一個項目。調用掃描器用戶在java中輸入的次數

我想要做的事情就好像它會詢問用戶他們要添加多少個數字,然後輸入所有數字,然後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 
    } 

所以我希望你的想法。任何幫助都會很棒,因爲我一直在尋找大概一個小時才能解決問題。謝謝。

+0

你是什麼意思,它「不工作」?它有什麼作用?你期望它做什麼?僅僅說「我希望你明白這一點」是不夠的。請提供更多詳情 – nhouser9

+0

爲什麼你有2臺掃描儀? – Li357

+0

好吧我會解釋它應該做什麼:P lol – MattGotJava

回答

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); 
} 

這裏是一個更先進的方式用做來自Java 8的IntStream

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);