Java:这段代码有什么问题?

时间:2015-09-02 11:55:00

标签: java

我试图打印出一个数字中每个单独数字的总和,但它没有给出正确的答案。我的代码出了什么问题?

    import javax.swing.*;
    public class Tallist {
       public static void main(String[]args) {               
          int sum = 0;   
             String tal = JOptionPane.showInputDialog(null, "skriv ett tal");   
                for(int X = 0; X<=15; X++) {                               
                   sum += tal.charAt(X);     
                      System.out.println(sum);  




      }            
   }
}

2 个答案:

答案 0 :(得分:0)

首先,如果你想迭代整个字符串,你不应该在你的for循环中将迭代次数修复为15。

for(int X = 0; X<=15; X++)

可以写成:

for(int x=0; x<tal.length(); x++)   //user lower case for non-final variables

下一步,您要汇总输入字符串的 ASCII 值,而不是数字。 因此,如果将"123"输入到InputDialog中,那么您总结 ASCII for 123 (49 + 50 + 51)而不是加起来(1+2+3)

在总结之前将其转换为整数:

sum += Character.getNumericValue(tal.charAt(x));

答案 1 :(得分:0)

如果我理解你正确,你想计算一个数字的十字脚。

这里是您通过输入对话框输入用户所需的代码:

public class Crossfoot
{
public static void main(String[] args)
{
    while (true)
    {
        String userInput = JOptionPane.showInputDialog("Enter number:");

        if (!isInteger(userInput))
        {
            continue;
        }

        int crossfoot = 0;

        for (int i = 0; i < userInput.length(); i++)
        {
            crossfoot += Character.getNumericValue(userInput.charAt(i));
        }

        System.out.println(crossfoot);
    }
}

public static boolean isInteger(String string)
{
    try
    {
        Integer.parseInt(string);
        return true;
    } catch (NumberFormatException numberFormatException)
    {
        return false;
    }
}
}

正如另一位用户已经写过的那样,你应该迭代整个字符串,并注意字符的ASCII值。