Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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 - Fatal编程技术网

Java 如何检查扫描的整数是否确实是整数?

Java 如何检查扫描的整数是否确实是整数?,java,Java,我对Java相当陌生,我用C语言编程,这与Java非常相似,但我在用Java捍卫代码时遇到了一些麻烦 我想保护我的代码不被非法输入,比如字符串、字符、特殊字符 我希望每次除int以外的输入都停留在do while循环中(确切位置标记为????) 这是我的代码,非常简单,它接受数字并计算最小值、最大值、平均值和。 如果输入数字-1,则程序将无法启动,或者循环将停止并打印计算结果 提前感谢您的帮助 public static void main(String[] args) { Scanne

我对Java相当陌生,我用C语言编程,这与Java非常相似,但我在用Java捍卫代码时遇到了一些麻烦

我想保护我的代码不被非法输入,比如字符串、字符、特殊字符

我希望每次除int以外的输入都停留在do while循环中(确切位置标记为????)

这是我的代码,非常简单,它接受数字并计算最小值、最大值、平均值和。 如果输入数字-1,则程序将无法启动,或者循环将停止并打印计算结果

提前感谢您的帮助

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    //Variables
    int count=0;
    int sum=0;
    int max=0;
    int min=0;

    //Initializing minimum value for a reference
    System.out.print("Enter a number ");
    int number = scan.nextInt();
    if(number!=-1){
        min=number;
        count++;
        sum+=number;
    }

            while(number!=-1){   

        do {
            System.out.print("Enter a number or -1 to stop: ");
            number = scan.nextInt();

        }while((Integer.toString(number)==null)||???????????? (Check for illegal input));

        if(number==-1){
            break;
        }
        else {  
            sum+=number;
            count++;
            if(number>max) {
                max=number;
            }
            else if(number<min) {
                min=number;
            }
        }
    }

    if(count!=0)
    {
        System.out.println("The Maximum number is: "+max);
        System.out.println("The Minimum number is: "+min);
        System.out.println("The Sum of all entered numbers is: "+sum);
        System.out.println("The Average of all entered numbers is: "+(double)sum/(double)count);
        System.out.println("T H E    E N D");
    }


    else {
        System.out.println("T H E    E N D");
    }


    scan.close();

}
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
//变数
整数计数=0;
整数和=0;
int max=0;
int min=0;
//初始化引用的最小值
系统输出打印(“输入数字”);
int number=scan.nextInt();
如果(数字!=-1){
最小=数量;
计数++;
总和+=数字;
}
而(数字!=-1){
做{
系统输出打印(“输入一个数字或-1停止:”;
number=scan.nextInt();
}while((Integer.toString(number)==null)| |??????(检查非法输入));
如果(数字==-1){
打破
}
否则{
总和+=数字;
计数++;
如果(数量>最大值){
最大值=数量;
}
否则,如果(number如“Gendarme”所述,方法“nextInt()”将对任何不可接受的(如字符)输入抛出异常

无论如何,如果您仍然希望检查不需要的输入,请在获取用户输入时使用简单的验证

if(scan.hasNextInt()) {
    number=scan.nextInt();
}
但我个人不喜欢你的逻辑
希望这有帮助!

我可以建议使用try-catch-block来停止输入任何字母的代码。在这种情况下,您可以同时使用正整数和负整数

import java.util.InputMismatchException;
import java.util.Scanner;

public class Store {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

//  Variables
int count = 0;
int sum = 0;
int max = 0;
int min = 0;

System.out.println("Enter numbers or Enter any letter to stop the programm:");
//    A try-catch block to use any char or letter to stop the code and see a result
    try {
//  Initializing minimum value for a reference
        min = scan.nextInt();
        sum += min;
        count++; 
/*  A do-while loop to enter so much values as you'd like, while a letter will not be 
entered **/
        do {
            int number = scan.nextInt();
            sum += number;
            if (number < min) min = number;
            if (number > max) max = number;
            count++;     
        }
        while (scan.hasNext());}
/*  If a letter was entered you catch an exception to normally break the code and see 
a result **/
    catch (InputMismatchException ime) {
    };

    if(count!=0) {
        System.out.println("The Maximum number is: "+ max + 
                "\nThe Minimum number is: "+ min + 
                "\nThe Sum of all entered numbers is: "+sum+
                "\nThe Average of all entered numbers is: "
+ double)sum/(double)count+
                "\nT H E   E N D");
    }
    else {System.out.println("T H E    E N D");}
    scan.close();
    }
}
import java.util.InputMismatchException;
导入java.util.Scanner;
公共类商店{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
//变数
整数计数=0;
整数和=0;
int max=0;
int min=0;
System.out.println(“输入数字或输入任何字母以停止程序:”);
//try-catch块使用任何字符或字母停止代码并查看结果
试一试{
//初始化引用的最小值
min=scan.nextInt();
总和+=min;
计数++;
/*do-while循环可以输入您想要的值,而不需要输入字母
进入**/
做{
int number=scan.nextInt();
总和+=数字;
如果(数量<最小值)最小值=数量;
如果(数量>最大值)最大值=数量;
计数++;
}
while(scan.hasNext());}
/*如果输入了一封信,您将捕获一个异常,以正常地中断代码并查看
结果**/
捕获(输入不匹配异常输入法){
};
如果(计数!=0){
System.out.println(“最大值为:”+max+
“\n最小值为:”+min+
“\n输入的所有数字之和为:“+Sum”+
“\n所有输入数字的平均值为:”
+双)和/(双)计数+
“\nT H E N D”);
}
else{System.out.println(“the E N D”);}
scan.close();
}
}

提示:
Scanner
nextInt()
中有一个
hasNextInt()
方法只接受整数(否则抛出异常)。
Integer.toString(数字)= = NULYWTF值得的;-(是)代码> -1 < /代码>与这个正则表达式匹配?@ Eric Blanc,如果这是有用的,请考虑将它标记为可接受的答案。下面你已经评论了你将使用它。将使用if(Stask.HasnExtTeNe()){NoT= Simult.NestTin());