JAVA语言基础关于流程控制的问题,困扰我很久了!!请大家一定要帮我解答一下,小弟实在感激不尽

2024-12-28 00:08:59
推荐回答(4个)
回答1:

这个本来就不是顺序执行的啊,本来就是两个分支啊,怎么叫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);
                    }
        }
}

回答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。

回答3:

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

回答4:

Scanner的nextInt() 时,如果输入了非数字,会报异常,所以需要try{}catch(){}捕捉异常

这不是流本身的问题