繁体   English   中英

Java:无法从String转换为int

[英]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所以sumzint值,但是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM