2015-09-04 45 views
0

此代碼有什麼問題?它說cannot convert from String to int,但我已經轉換它。Java:無法將字符串轉換爲int

public static void main(String[] args) { 

    String x = JOptionPane.showInputDialog(null, "Hur många värden haver du?"); 

    int i = Integer.parseInt(x); 

    for (int y = 0; i >= y; y++) { 
     String z = JOptionPane.showInputDialog(null, "Skriv in värdet"); 
     int sum = Integer.parseInt(z); 
     sum = (sum + z); 
    } 
} 

回答

4

不,你已經轉換到zint和結果存儲在sum所以sumzzint值仍String類型的變量。你在這裏試圖做的和把乘以兩和一樣。

但我假設你想總結所有輸入值,所以你可以做sum = (sum + Integer.parseInt(z));並把sum的聲明放在循環之外,否則你在每次迭代時初始化它。另一個缺點是,如果你輸入x它將迭代x + 1次,因爲i >= y。下面是固定版本。

String x = JOptionPane.showInputDialog(null, "Hur många värden haver du?"); 

    int i = Integer.parseInt(x); 
    int sum = 0; 
    for (int y = 0; i > y; y++) 
    { 
     String z = JOptionPane.showInputDialog(null, "Skriv in värdet"); 
     sum = (sum + Integer.parseInt(z)); 
    } 
    System.out.println(sum); 

Input: 3 (number of iterations) 
Input: 7 
Input: 5 
Input: 6 
Output: 18 
+0

不應該把這個'i> y'設爲'y

+0

@Karan Mer如果你寫'i> y'或者'y kai

0

無法從字符串轉換爲int

sum=(sum+z) // int+string // this was the problem 

改變你的Z到詮釋爲:

int iz= Integer.parseInt(z); 
    sum = (sum + iz); 
1

的Java不做類型之間自動轉換。所以你不能用數字添加字符串,並期望它做數學。

Java做的事情是將原始類型自動裝箱到對象中。如果您在字符串連接中使用它,它會自動嘗試對對象調用toString()。

正如賴梅斯寫的。您需要將字符串轉換爲數字,你開始在數學

0
int sum = 0; 
for (int y = 0; i >= y; y++) { 
    try{ 
     String z = JOptionPane.showInputDialog(null, "Skriv in värdet"); 
     sum = (sum + Integer.parseInt(z)); 
    } catch (Exception e){ 
     System.out.println("This was not an Integer: " + z); 
    } 
} 

異常會阻止你的程序崩潰使用它之前,但它不會搞砸了你的「和」。所以你可以再次輸入另一個值,然後繼續...