我现在在一个可以分割,添加,等等的程序上工作,但是,我也为其他人制作它,所以,问题通常也有字母。我可以实现什么代码,以便我的程序忽略字符,只关注数字?
修改的
import static java.lang.System.out; import java.util.Scanner;
public class Trinomial { public static void main(final String args []){
final Scanner first = new Scanner(System.in);
out.print("Enter the first number: ");
final int First = first.nextInt();
final Scanner second = new Scanner(System.in);
out.print("Enter the second number: ");
final int Second = second.nextInt();
final Scanner third = new Scanner(System.in);
out.print("Enter the third number: ");
final int Third = third.nextInt();
numFactors(First);
}
}
答案 0 :(得分:1)
您可以让程序使用Character.isDigit()
http://www.tutorialspoint.com/java/character_isdigit.htm
您可能还希望允许您的数学运算符通过,例如
if (Character.isDigit(input) || input == '+' ||
input == '-' || input == '/' || input == '*')
{
// Do something with input
}
如果这不是您想要的,请将您的问题改进为更具体。
答案 1 :(得分:0)
首先,您必须使用扫描程序中的next()方法,因为如果下一个标记包含非数字字符,则nextInt()将返回异常。这将把令牌读作String。然后,你可以通过创建一个空字符串去除非数字字符(出于性能原因,StringBuilder可以更好,但这使它更复杂),循环遍历原始字符串并使用已经提到的isDigit()方法确定该字符是否为数字。如果是,请将其添加到新字符串中。一旦你有一个只包含数字的字符串,使用Integer.parseInt(string)方法来获取整数值。
我不太确定,为什么每次都会初始化一个新的扫描仪,我认为你应该能够在整个程序中使用第一个扫描仪。