我试图打印出一个数字中每个单独数字的总和,但它没有给出正确的答案。我的代码出了什么问题?
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);
}
}
}
答案 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值。