我正在为学校工作编写这个程序,要求用户输入一系列字母和数字,并确定它是否为数字。
我的老师要我添加数字(数字)字符并将其输出为"您的数字加起来是:这里添加了数字" 并输出字母是一个字符串说"这些是你的字母:*在这里放置字母。"
我认为我的代码是正确的,它决定了它是否是一个数字,但我最终如何添加它们?我尝试使用if语句检查Character.isDigit是否为true但我一直收到错误,我认为我写的完全错了。任何回复都将不胜感激。
这是我的代码:
import java.util.*;
import java.util.Scanner;
public class MyClass
{
public static void main(String args[])
{
int sum1 = 0;
String stringFull = "";
boolean isTrue = Character.isDigit(string1.charAt(i));
Scanner getString = new Scanner(System.in);
System.out.println("Please enter a sequence of letters: ");
String string1 = getString.nextLine();
for(int i = 0; i < 5; i++)
{
if (Character.isDigit(string1.charAt(i)))
{
sum1 += Character.getNumericValue(string1.charAt(i));
} else {
stringFull += string1.charAt(i);
}
if (isTrue)
{
System.out.println(sum1 * sum1);
}
}
}
}
答案 0 :(得分:1)
由于i
未在此行之前声明
boolean isTrue = Character.isDigit(string1.charAt(i));
而是应该使用false
boolean isTrue = false;
然后,你的循环应该循环到给定的字符串长度,但你已经硬编码为5,这将在字符串长度小于5时在运行时导致异常。
for(int i = 0; i < 5; i++)
应该改为
for(int i = 0; i < string1.length(); i++)
此外,在for
循环内部,您有以下代码行,但您从未在循环内更改isTrue
值。
if (isTrue)
{
System.out.println(sum1 * sum1);
}
而且,我认为,正确地更改isTrue
值,您要检查数字。
if (Character.isDigit(string1.charAt(i)))
{
sum1 += Character.getNumericValue(string1.charAt(i));
isTrue = true;
}
答案 1 :(得分:0)
你应该使用
Integer.parseInt(String.valueOf(string1.charAt(i)))
返回数字,而不是
Character.getNumericValue(string1.charAt(i))
返回数字
的ascii代码