[英]Java: Cannot convert from String to int
此代码有什么问题? 它说cannot convert from String to 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);
}
}
不,您已经将z
转换为int
并将结果存储在sum
所以sum
是z
的int
值,但是z
仍然是String
类型的变量。 您在此处尝试执行的操作与将总和乘以2相同。
但是我假设您想对所有输入值求和,所以可以做sum = (sum + Integer.parseInt(z));
并将sum
声明放在循环之外,否则在每次迭代时都将其初始化。 另一个错误是,如果输入x
,由于i >= y
,它将迭代x + 1
次。 下面的固定版本。
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
Java不会在类型之间进行自动转换。 因此,您不能将字符串与数字相加并且不能期望它能进行数学运算。
Java所做的是自动将原始类型装箱到对象。 如果在String串联中使用toString(),它将自动尝试在对象上调用toString()。
正如雷缪斯所写。 您需要先将字符串转换为数字,然后才能开始在数学中使用它
无法从String转换为int
sum=(sum+z) // int+string // this was the problem
将z更改为int:
int iz= Integer.parseInt(z);
sum = (sum + iz);
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);
}
}
该异常将防止您的程序崩溃,但不会破坏您的“总和”。 因此,您可以再次输入其他值,然后继续...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.