2015-09-04 57 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); 
    } 
} 

异常会阻止你的程序崩溃使用它之前,但它不会搞砸了你的“和”。所以你可以再次输入另一个值,然后继续...