2016-04-09 98 views
-3

我是編程和Java的新手,我有這個程序,計算輸入的總和沒關係,但我需要通過鍵入「=」結束這個循環,任何建議?總和多個整數

import java.util.Scanner; 

public class SumOfNum { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner sc = new Scanner (System.in); 
     int input; 
     int sum = 0; 
     String s = "="; 
     System.out.println("Enter Num"); 

     for (int i=0; i<100; i++) { 
      input=sc.nextInt(); 
      sum+=input; 
      if(){break;}  
     } 
     System.out.println(sum); 

    } 
} 

如果有任何建議使這個程序更好的性能,它會有所幫助。

回答

1

爲了測試您的input是否爲=,您需要讀取令牌作爲String(s)。像,

Scanner sc = new Scanner(System.in); 
int sum = 0; 
String input; 
do { 
    System.out.println("Enter Num"); 
    input = sc.next(); 
    if (input.matches("\\d+")) { // <-- sanity check for digits. 
     try { 
      sum += Integer.parseInt(input); 
     } catch (Exception ignored) { 
     } 
    } 
} while (!input.equals("=")); 
System.out.println(sum); 
1

可以嘗試通過使用sc.nextLine(讀取的字符串),並使用string.matches方法來確定閹羊輸入是一個數字或「=」。匹配數字示例How to check if user input is String, double or long in Java

String s=null; 
    boolean validInput=false; 
    do{ 
     s= scannerInstance.nextLine(); 
     if(s.matches("\\d+")){// checks if input only contains digits 
     validInput=true; 
     } 
     else{ 
     // invalid input 
    } 
    }while(!validInput); 
+0

能,弄不明白... –

+0

的String.matches函數比較兩個字符串,如果字符串相同,則返回true。您還可以檢查它是否與示例中的正則表達式匹配。所以在你的情況下,你會檢查輸入是否是一個數字,如果它是一個數字將它轉換爲一個整數並將其添加到其他整數和,否則如果s.matches(「=」),那麼你打破循環。我也會將for循環更改爲do while循環 – Alex

1

我認爲您應該嘗試關注。它應該有相同的結果,你想什麼:

Scanner sc= new Scanner (System.in); 
int input; 
int sum=0; 
String inStr=""; 
System.out.println("Enter Numbers"); 
while(sc.hasNext()) 
{ 
    inStr=sc.next(); 
    if(!inStr.equals("=")) 
    { 
     input=Integer.parseInt(inStr); 
     System.out.println("input=="+input); 
     sum+=input; 
     System.out.println("sum ASON=="+sum); 
    } 
    else 
     break; 

} 
System.out.println("sum==="+sum);