2015-05-29 43 views
-2

我在嘗試運行程序時遇到問題。我的程序應該做的是接收一個數字並將其與int進行比較。我明白,該程序認爲我試圖比較字符串與int並不高興。我能做什麼?運算符<未定義爲參數類型(s)字符串,int

import java.util.Scanner; 
public class C { 
    public static void main(String args[]) { 
     Scanner input = new Scanner (System.in); 
     String age = input.nextLine(); 
     if (age < 50){ 
      System.out.println("You are young"); 
     }else{ 
      System.out.println("You are old"); 
     } 
    } 
} 

回答

6

使用數值比較運營商無法比擬一個Stringint。 Java語言規範的§15.20.1描述你所看到的正是:

類型各數值比較操作的操作數必須是一個類型,它是轉換(§5.1.8)爲原始數字類型,或編譯時錯誤發生

由於String不能轉換爲原始數字類型,因此無法將其與整數進行比較。因此,你有兩個選擇:

  • 可以使用Integer#parseIntString轉換成int

    int age = Integer.parseInt(ageString); 
    
  • 但在你的情況,因爲你是在輸入已閱讀,它會更好繞過整個parseInt位和讀出在int直接:

    int age = input.nextInt(); 
    

請記住,你仍然必須處理無效輸入的可能性。

1

在比較之前,您需要使用parseInt()將其轉換爲整數。

3

你需要age是爲了把它比作50

的整數你有兩個選擇:

int age = input.nextInt(); 

int age = Integer.parseInt(input.nextLine()); 

注意,這兩個選項會拋出異常如果你輸入的輸入不是一個整數。

+1

這肯定應該是正確的答案,因爲'input.nextInt'就是要走的路。 –

+0

通過使用['hasNextInt'](http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html)檢查輸入,可以防止從'Scanner'選項中拋出異常首先是#hasNextInt())。 –

+0

'parseInt()'不是更好的解決這個問題的方法,因爲方法可能會拋出'NumberFormatException' – Andrew

0

您需要將字符串解析爲整數。

String age = input.nextLine(); 
if (Integer.parseInt(age) < 50) { 
    System.out.println("You are young"); 
} 
0

掃描儀類實際上有)稱爲nextInt(輸入法,您可以使用:

Scanner input = new Scanner(System.in); 
int age = input.nextInt(); 
// Comparisons 
0

你不能比較一個String和int類型 「<」, 「>」,」 < =「,」> =「運營商。這是你的代碼的問題。修復你可以, 從用戶輸入作爲int通過替換第5行爲int age = input.nextInt(); 或者您可以將您的年齡字符串轉換爲整數後,從用戶使用類似這樣的輸入int intage=Integer.parseInt(age);。然後你可以用變量替換你的年齡變量

相關問題