这个本来就不是顺序执行的啊,本来就是两个分支啊,怎么叫try.catch就不行了?
像你这种问题最简单的处理办法就是try catch啊
public class Test {
public static void main(String[] args) {
while(true){
Scanner scan = new Scanner(System.in);
System.out.println("请输入你要输入的数:");
try{
int input = scan.nextInt();
System.out.println("你输入的数是:"+input);
if(input>0){
System.out.println("输出:"+input*2);
break;
}
}catch(Exception e){
//如果输入的是字母或是其他非数字字符。提示如下:
System.out.println("你输入错误,请输入数字");//并且跳转到上面继续输入!
}
}
}
}
代码没测过,应该是对的吧
java没有goto的啊,这种代码本来就不该这么实现 啊.要是想解决这个的话,你去学习下方法封装之类的东西啊,跟你说的这个东西没有关系的啊......
public class Test {
public static void main(String[] args) {
test2();
}
public static void test2() {
try{
test();
}catch(Exction e){
//如果输入的是字母或是其他非数字字符。提示如下:
System.out.println("你输入错误,请输入数字");//并且跳转到上面继续输入!
test2();
}
}
public static void test() {
Scanner scan = new Scanner(System.in);
System.out.println("请输入你要输入的数:");
int input = scan.nextInt();
System.out.println("你输入的数是:"+input);
if(input>0){
System.out.println("输出:"+input*2);
}
}
}
int input = scan.nextInt();只能输入整数哦,其他的都会报错。
String next()
查找并返回来自此扫描器的下一个完整标记。
String next(Pattern pattern)
如果下一个标记与指定模式匹配,则返回下一个标记。
String next(String pattern)
如果下一个标记与从指定字符串构造的模式匹配,则返回下一个标记。
BigDecimal nextBigDecimal()
将输入信息的下一个标记扫描为一个 BigDecimal。
BigInteger nextBigInteger()
将输入信息的下一个标记扫描为一个 BigInteger。
BigInteger nextBigInteger(int radix)
将输入信息的下一个标记扫描为一个 BigInteger。
boolean nextBoolean()
扫描解释为一个布尔值的输入标记并返回该值。
byte nextByte()
将输入信息的下一个标记扫描为一个 byte。
byte nextByte(int radix)
将输入信息的下一个标记扫描为一个 byte。
double nextDouble()
将输入信息的下一个标记扫描为一个 double。
float nextFloat()
将输入信息的下一个标记扫描为一个 float。
int nextInt()
将输入信息的下一个标记扫描为一个 int。
int nextInt(int radix)
将输入信息的下一个标记扫描为一个 int。
String nextLine()
此扫描器执行当前行,并返回跳过的输入信息。
long nextLong()
将输入信息的下一个标记扫描为一个 long。
long nextLong(int radix)
将输入信息的下一个标记扫描为一个 long。
short nextShort()
将输入信息的下一个标记扫描为一个 short。
short nextShort(int radix)
将输入信息的下一个标记扫描为一个 short。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = 0;
while(true) {
System.out.println("请输入数字:");
if(scan.hasNextInt()) {
i = scan.nextInt();
break;
}
else {
scan.next();
System.out.println("不是数字");
}
}
if(i > 0) {
System.out.println("输出:" + i * 2);
}
}
}
Scanner 中 hasNextInt() 方法
可以看看 Scanner 的 API : http://apihome.cn/api/java/Scanner.html
Scanner的nextInt() 时,如果输入了非数字,会报异常,所以需要try{}catch(){}捕捉异常
这不是流本身的问题