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