Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何忽略用户通过扫描仪输入的字符?_Java_Char_Numbers_Java.util.scanner - Fatal编程技术网

Java 如何忽略用户通过扫描仪输入的字符?

Java 如何忽略用户通过扫描仪输入的字符?,java,char,numbers,java.util.scanner,Java,Char,Numbers,Java.util.scanner,我现在正在做一个可以除法、加法等的程序,但是,我也在为其他人做,所以,问题通常也有字母。我可以实现什么代码,使我的程序忽略字符,而只关注数字 导入静态java.lang.System.out; 导入java.util.Scanner; 公共类三项式{ 公共静态void main(最终字符串参数[]){ 第一个最终扫描仪=新扫描仪(System.in); 打印(“输入第一个数字:”); final int First=First.nextInt(); 最终扫描仪秒=新扫描仪(System.in);

我现在正在做一个可以除法、加法等的程序,但是,我也在为其他人做,所以,问题通常也有字母。我可以实现什么代码,使我的程序忽略字符,而只关注数字

导入静态java.lang.System.out;
导入java.util.Scanner;
公共类三项式{
公共静态void main(最终字符串参数[]){
第一个最终扫描仪=新扫描仪(System.in);
打印(“输入第一个数字:”);
final int First=First.nextInt();
最终扫描仪秒=新扫描仪(System.in);
打印(“输入第二个数字:”);
final int Second=Second.nextInt();
最终扫描仪第三台=新扫描仪(System.in);
打印(“输入第三个数字:”);
final int Third=Third.nextInt();
numFactors(第一);
}
}

您可以让程序使用
character.isDigit()

您可能还希望允许您的数学运算符通过,例如

if (Character.isDigit(input) || input == '+' || 
    input == '-' || input == '/' || input == '*')
{
    // Do something with input
}

如果这不是您想要的,请改进您的问题,使其更加具体。

首先,您必须使用扫描仪中的next()方法,因为如果下一个标记包含非数字字符,nextInt()将返回异常。这将以字符串形式读取令牌。然后,您可以通过创建一个空字符串(出于性能原因,StringBuilder可能更好,但这会使它更复杂),循环原始字符串,并使用前面提到的isDigit()方法来确定字符是否为数字,从而消除非数字字符。如果是,则将其添加到新字符串中。一旦字符串只包含数字,使用Integer.parseInt(string)方法获取整数值


我不太清楚,为什么你每次都要初始化一个新的扫描仪,我认为你应该能够在整个程序中使用第一个扫描仪。

好的解决方案:你能用
Character.isDigit(c)
来确定给定的字符是否是数字吗?让我重新措辞。我的意思是,如果程序发现一个字符,不管是什么类型的,都会忽略它。空值,删除它。@AbrahamAndujo:你有可以发布的现有代码吗?没有更多的上下文,很难给出一个好的答案。