2017-03-01 10 views
1

「計算機」を作成しようとしていますが、合計を構成するために使用された各要素を印刷する必要があります。この配列要素の印刷は、プログラムの最後にユーザーが0を2回続けて入力するときに行われる必要があります。Javaで整数入力を合計し、プログラムの終わりに配列に結果を表示する方法はありますか?

入力を入力すると、整数値が配列に格納されます。プログラムの終わりに達すると、この配列の内容が表示されます。しかし、プログラムの終わりに達していない場合は、ユーザーが連続した入力を追加しながらプログラムが続行されます。

現在、プログラムは、合計を計算するために使用されたすべての要素ではなく、一度に1つの要素のみを印刷します。デバッグに何時間も費やしましたが、どんな指針も大変ありがとうございます!

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

[1行から複数​​のJavaを読み込むJavaの可能な複製](http://stackoverflow.com/questions/23506429/java-reading-multiple-ints-from-a-single-line) – demongolem

答えて

0

ループの入力を合計すると、ユーザーの入力を整数のリストに格納できます。それらを再印刷する必要があると、リストを反復して保存した要素を印刷できます。

例:

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ループ内で、アレイは再初期化するたびにある:

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

ので、任意の以前に入力された値が失われます。また、while内のforループの目的は明確ではありません。

また、配列を使用する必要がない場合は、実際には配列は必要ありません。 StringBufferを使用して、入力した値を追加することができます。

関連する問題