2017-03-01 29 views
1

我想創建一個「計算器」,除了它需要打印每個元素,用於構成總和。數組元素的這種打印需要在程序結束時發生,當用戶連續兩次輸入0時。如何在Java中求和整型輸入,並在程序結束時在數組中顯示結果?

輸入一個輸入後,整數值將被存儲在一個數組中。一旦程序結束,該數組的內容將被打印。但是,如果尚未達到程序的結束時間,程序將繼續,而用戶將添加連續的輸入。

目前,程序將一次僅打印一個元素,而不是每個用於計算總數的元素。我花了幾個小時試圖調試,任何指導將不勝感激!

import java.util.*; 

public class AddingMachine { 

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    boolean justStarting = true; 
    int total = 0; 
    int subtotal = 0; 
    int input; 
    int last = 1; 
    int MAXIMUM_NUMBER_OF_INPUTS = 100; 
    while (true) { 
     input = scanner.nextInt(); 
     if (input == 0) { 
      if (last == 0) { 
       System.out.println("total " + total); 
       return; 
      } 
      System.out.println("subtotal " + subtotal); 
      total += subtotal; 
      subtotal = 0; 
     } 
     subtotal += input; 
     last = input; 
     int[] numbers = new int[args.length]; 
     for (int i = 0; i < args.length; i++) { 
      numbers[i] = last; 
     } 
     System.out.println(Arrays.toString(numbers)); 
    } 
} 
+0

無論何時您正在編寫命令行程序,您都應該讓用戶知道他/她需要做什麼。例如:System.out.print(「請輸入一個數字:」);例如:System.out.println(「請按z結束程序」); – Sedrick

+0

[Java從一行讀取多個整數]的可能重複(http://stackoverflow.com/questions/23506429/java-reading-multiple-ints-from-a-single-line) – demongolem

回答

0

當在循環中對輸入進行求和時,可以將用戶輸入存儲到整數列表中。一旦你需要重印它們,你可以迭代列表並打印你存儲的元素。

實施例:

int[] numbers = new int[args.length]; 

因此任何先前輸入的值丟失:

List<Integer> storedUserInput = new ArrayList<>(); 
while (true) { 
     input = scanner.nextInt(); 
     storedUserInput.add(input); 
    if (input == 0) { 
     if (last == 0) { 
      for(Integer i : storedUserInput){ 
       System.out.print(i + " + "); 
      } 
      System.out.println("total " + total); 
      return; 
     } 
     System.out.println("subtotal " + subtotal); 
     total += subtotal; 
     subtotal = 0; 
    } 

} 
0

while循環中,陣列的每個時間重新初始化。此外,while中的for循環的目的尚不清楚。

另外,除非使用數組是必需的,否則您確實不需要數組。您可以使用StringBuffer並追加輸入的值。

相關問題