我的程序接受整数输入,然后是更大的整数输入,然后是字符串。
“输入数字:”
“输入更大的数字:”
“输入一个字符串:”
我试图使用try / catch捕获输入字符串而不是整数的情况。我有点让代码起作用了,但是在执行错误消息后,它跳过了下一个int输入问题,直接进入“输入字符串”。
我假设我需要在某处进行while循环,但是在弄清楚将其确切放置在何处以及使用什么参数方面遇到了麻烦。简而言之,(我认为)我需要:while(输入!=字符串)。我只是不知道该怎么做。
try {
System.out.println("Enter a number: ");
int start = myscanner.nextInt();
System.out.println("Enter a bigger number: ");
int end = myscanner.nextInt();
if (start > end) {
System.out.println("Error: Start should be smaller.");
} else {
int result = sumInt(start, end);
System.out.println("Result: " + result);
}
} catch (InputMismatchException exception) {
System.out.println("Enter a number, not a string.");
}
```````````````````````````````````````````````````````````````````````````
最佳答案
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
try{
Scanner myscanner = new Scanner(System.in);
int option =1;
do{
System.out.println("Enter a number: ");
String start = myscanner.next();
boolean sflag= isInteger(start);
if(!sflag )
{System.out.println("Error: value not Integer."); continue;}
System.out.println("Enter a bigger number: ");
String end = myscanner.next();
boolean eflag= isInteger(end);
if( !eflag)
{System.out.println("Error: value not Integer."); continue;}
if ( Integer.parseInt(start) > Integer.parseInt( end)) {
System.out.println("Error: Start should be smaller.");
} else {
int result = sumInt( Integer.parseInt( start),
Integer.parseInt( end));
System.out.println("Result: " + result);
System.out.println("select following option");
System.out.println("1. continue");
System.out.println("2.exit");
option = myscanner.nextInt();
//isInteger(option);
}
}while(option != 2);
}catch(Exception e){
System.out.println(e);
}
}
public static boolean isInteger( String input ) {
try {
Integer.parseInt( input );
return true;
}
catch( Exception e ) {
return false;
}
}
public static Integer sumInt(int start, int end){
return start + end;
}
}