2015-09-30 80 views
1

我一直在試圖讓這個程序工作,應該繼續從用戶輸入,直到輸入-1並計算總和。 問題如下: 設計並實現一個Java程序(命名爲 InputSum ),它提示用戶輸入一個正整數 。該程序應爲ac cept整數,直到用戶輸入值-1 (負數)。用戶輸入-1後,程序 應顯示輸入的數字,然後顯示其總和 ,如下所示。請注意,-1不是輸出的一部分。 確保程序 在proc 之前驗證每個輸入的號碼,因爲用戶可以輸入除句號值-1 以外的負數 數字。
設計你的程序,使其 允許用戶重新運行 程序與上面顯示的同一運行中的一組不同的輸入。 記錄您的代碼,並按上圖所示組織空間輸出。想不通爲什麼程序將無法正常運行

這裏是我的代碼:

/* Class:  CS1301 
* Section:  9:30 
* Term:   Fall 2015 
* Name:   Matthew Woolridge 
* Instructor: Mr. Robert Thorsen 
* Assignment: Assignment 6 
* Program:  1 
* ProgramName: InputSum 
* Purpose:  The program prompts the user to input numbers until -1 is entered and calculates the sum 
* Operation:  The information is statically instantiated in the code and 
*    the data is output to the screen. 
* Input(s):  The input is the numbers 
* Output(s):  The output will be the sum of the numbers 
* Methodology: The program will use loops to determine if numbers or still to be entered or if -1 was entered 
* 
*/ 

import java.util.*; 
import java.io.*; 
public class InputSum 
{ 

    public static void main (String[] args) 
    { 

     /****************************************************************************** 
     *       Declarations Section        * 
     ******************************************************************************/ 
     /****************************CONSTANTS********************************/ 
     Scanner scan = new Scanner(System.in); //Initializes scanner 

     int n = 1; 
     int [] num = new int[n]; //Creates array for input numbers 
     int i; 
     int sum=0; 

     /****************************************************************************** 
     *        Inputs Section         * 
     ******************************************************************************/ 

     System.out.print("Please input integers, note that -1 ends the submissions: "); //Prompts the user for input 

    /****************************variables********************************/ 
    //***************************Calculations in processing************************// 
    /****************************************************************************** 
     *        Processing Section       * 
     ******************************************************************************/ 
     for(i=0; i<num.length; i++) 
     { 
     num[i] = scan.nextInt(); //Continues to read numbers and add them to the sum 
     n = n + 1; //Adds to the array maximum 
     sum = sum + num[i]; //Calculates the sum 
     if (num[i] == -1){ 
      break; 
     } 
     } 
     System.out.print("The numbers entered are: " + num[i]); 
     System.out.print("\nThe sum of the numbers is: " + sum); 

     /****************************************************************************** 
     *        Outputs Section        * 
     ******************************************************************************/ 
     //***************Output is in the processing**************************// 
    } 
} 

的問題是,該方案不斷得到在哪裏它應該打印之行掛斷了電話。任何和所有的幫助表示讚賞!

+0

你的程序是因爲你的數組大小是'1',所以它只能接受'num [0]'的值。 –

+0

由於您不知道用戶使用陣列輸入的值有多少,因此是不好的選擇。使用一些根據需要擴展的數據結構。例如。一個ArrayList應該適合你的需求。 –

+0

我應該如何去使用一個數組列表,我沒有必要經常使用它,說實話。 – snipem1438

回答

1

您可以使用List來存儲數字和一個無限循環以保持接收來自用戶的輸入。你也應該在開始處理數字之前檢查停止條件(因爲你的問題提到-1不是輸出的一部分)。這裏是一個例子

import java.util.*; 
import java.io.*; 
public class InputSum 
{ 

    public static void main (String[] args) 
    { 

     /****************************************************************************** 
     *       Declarations Section        * 
     ******************************************************************************/ 
     /****************************CONSTANTS********************************/ 
     Scanner scan = new Scanner(System.in); //Initializes scanner 
     int number; //Declare a variable that will hold the temporal value that is read on the input stream  
     int sum=0; 

     // Use a List 
     List<Integer> numbers = new ArrayList<Integer>(); 

     /****************************************************************************** 
     *        Inputs Section         * 
     ******************************************************************************/ 

     System.out.print("Please input integers, note that -1 ends the submissions: "); //Prompts the user for input 

    /****************************variables********************************/ 
    //***************************Calculations in processing************************// 
    /****************************************************************************** 
     *        Processing Section       * 
     ******************************************************************************/ 
     // use an infinite loop 
     for(; ;) 
     { 


     // You should normally do this check when you enter the loop 
     // so that -1 which is a stop token should not be added to the list 
     // and not taken into account in the sum 


     number = scan.nextInt(); //Continues to read numbers and add them to the sum 
     if (number == -1){ 
       break; 
     } 

     // You could write numbers.add(number) which would be 
     // Java's autoboxing feature, but this is what would really take place 
     numbers.add(Integer.valueOf(number)); 
     sum += number; //Calculates the sum 


     } 
     System.out.print("The numbers entered are: " + numbers); 
     System.out.print("\nThe sum of the numbers is: " + sum); 

     /****************************************************************************** 
     *        Outputs Section        * 
     ******************************************************************************/ 
     //***************Output is in the processing**************************// 
    } 
} 
+0

感謝所有的幫助,並感謝alainlompo列表的例子! :d – snipem1438

1

而不是使用數組(因爲它限制了您的輸入數量),您可以使用一個臨時變量來計算總和的值。如下圖所示:

int sum=0; 
int num=0; 
while(num != -1) { 
    sum = sum + num; 
    num = scan.nextInt(); //note that the variables can be reused 
} 
相關問題