2014-10-02 46 views
-3

我的程序要求用戶輸入可以是字符串,整數或雙精度的輸入列表。一旦用戶完成輸入列表,他們鍵入「退出」完成。 (即用戶輸入:1 2 2.3退出)如何計算我有多少個字符串並將它們連接在一起?

一旦他們輸入「退出」,我的程序將加起來整數和雙打,打印這些值,它也會告訴你有多少整數/雙打在列表中。

但現在我想也考慮到字符串輸入(除int或double以外的任何其他字符串)。如果我得到一些字符串值,我想要統計出有多少個字符串,並將它們連接起來,並在最後打印所有字符串。

我在考慮使用「else」語句,因爲它會考慮除整數和雙精度以外的所有內容,但我該如何使用現在的代碼執行此操作?有沒有辦法讓用戶不必輸入「退出」來完成列表?我能否擁有它,這樣一旦用戶按下「輸入」,程序就會繼續?提前致謝。

import java.util.Scanner; 

public class InputParser 
{ 
    public static void main(String[] args) 
    { 
     Scanner scanner = new Scanner(System.in); 
     System.out.println("How many values do you want to input?: "); 
     int numValues = scanner.nextInt(); 
     System.out.println("Enter " + numValues + " values: "); 
     int sumIntegers = 0; 
     int countIntegers = 0; 
     double sumDoubles = 0.0; 
     int countDoubles = 0; 

     while (scanner.hasNextLine()) 
     { 
     if (scanner.hasNextInt()) 
     { 
      countIntegers++; 
      sumIntegers += scanner.nextInt(); 
     } 
     else if (scanner.hasNextDouble()) 
     { 
      countDoubles++; 
      sumDoubles += scanner.nextDouble(); 
     } 
     else 
     { 
      String str = scanner.next(); 
      if (str.equalsIgnoreCase("quit")) 
      { 
       break; 
      } 
     } 
     } 
     System.out.println("Number of integers: " + countIntegers); 
     System.out.println("Sum of integers: " + sumIntegers); 
     System.out.println("Number of doubles: " + countDoubles); 
     System.out.println("Sum of doubles: " + sumDoubles); 
    } 
} 
+1

終於你的程序結束了大聲笑 – 2014-10-02 02:29:53

+0

做這個工作? ....我相信它會拋出異常。在使用nextDouble之後,你會遇到問題。你會遇到一個問題。 – StackFlowed 2014-10-02 02:33:51

+0

@Karen我建議一種方法,如果你不想使用相當打字的方法 – 2014-10-02 02:47:29

回答

0

好了,你不需要有值的個數作爲輸入。因爲有一個輸入結束標記,「退出」。

無論如何,爲您的代碼處理所有字符串並進行連接的結果非常簡單。

import java.util.Scanner; 

public class InputParser 
{ 
    public static void main(String[] args) 
    { 
     Scanner scanner = new Scanner(System.in); 

     System.out.println("Enter values: "); 
     int sumIntegers = 0; 
     int countIntegers = 0; 
     double sumDoubles = 0.0; 
     int countDoubles = 0; 
     StringBuilder sumString = new StringBuilder(); 
     int countStrings = 0; 

     while (scanner.hasNextLine()) 
     { 
      if (scanner.hasNextInt()) 
      { 
       countIntegers++; 
       sumIntegers += scanner.nextInt(); 
      } 
      else if (scanner.hasNextDouble()) 
      { 
       countDoubles++; 
       sumDoubles += scanner.nextDouble(); 
      } 
      else 
      { 
       String str = scanner.next(); 
       if (str.equalsIgnoreCase("quit")) 
       { 
        break; 
       } 
       else { 
        ++countStrings; 
        sumString.append(str); 
       } 
      } 
     } 
     System.out.println("Number of integers: " + countIntegers); 
     System.out.println("Sum of integers: " + sumIntegers); 
     System.out.println("Number of doubles: " + countDoubles); 
     System.out.println("Sum of doubles: " + sumDoubles); 
     System.out.println("Number of strings: " + countStrings); 
     System.out.println("concatenated string: " + sumString.toString()); 

     scanner.close(); 
    } 
} 

請不要忘記關閉掃描儀:如果沒有,會有警告。

0

由於在下面的代碼,你從用戶

else 
    { 
     String str = scanner.next(); 
     if (str.equalsIgnoreCase("quit")) 
     { 
      break; 
     } 
    } 

讀你的字符串類型,你需要有一個統計有多少字符串用戶至今已進入像

int numberOfString = 0; 

計數器和

else 
    { 
     String str = scanner.next(); 
     numberOfString++; 
     if (str.equalsIgnoreCase("quit")) 
     { 
      break; 
     } 
    } 

進行連結在一起,如果你不希望將它們保存

String result = ""; 

    else 
    { 
     String str = scanner.next(); 
     numberOfString++; 
     result += str+" "; <-- to make a blank so you can separate between each String 
     if (str.equalsIgnoreCase("quit")) 
     { 
      break; 
     } 
    } 

既然你問用戶,他或她想要多少價值把

作爲建議您可以在while循環改爲

int i = 0; 
while(i < numValues){ 

    i++; 
    } 

所以while循環只是讀取,例如,如果2倍,用戶在這裏

System.out.println("How many values do you want to input?: "); 
    int numValues = scanner.nextInt(); 
進入

,所以沒有必要檢查,如果用戶鍵入相當或不 :)

+0

感謝您的解釋! – Karen 2014-10-02 16:42:24

相關問題