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

public class Test {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
System.out.println("请输入你要输入的数:");
int input = scan.nextInt();

System.out.println("你输入的数是:"+input);

//如果输入的是字母或是其他非数字字符。提示如下:
System.out.println("你输入错误,请输入数字");//并且跳转到上面继续输入!

if(input>0){
System.out.println("输出:"+input*2);
}
}
}

大家看到我上面图片的代码了吗(这是我一直以来想法解决的问题,困扰我很久了,就是得不到解决,但是又好像非常简答)?

我输入一个整型数,就会正常输出。如果输入的是字母或是其他字符就会报异常。我想实现我如果输入的是其他字母或是字符,提示错误并且跳转重新输入当输入正确的整型字符时,然后继续执行下面的if语句。
注意:就帮我说一个简单的方法,以后随时都可以用的。有些方法,会破坏循环,不能接后面的语句了,比如用try...catch就不行了。
就这么一个简单的要求,请大家一定要帮小弟我解答一下谢谢了。
看吧,这个代码和我的问题一样,我再一次无法解决!!如果再输入工资错误提示跳转,并且重新输入。但是这个问题我一直的不到解决。

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

追问

谢谢哈,我想在问你两个问题:

    我用了cry catch 后下面的if语句就不能检测到了,他们说用for循环。实在搞不懂。

    你复制的像图片,但是又可以复制文字,还带有数列行是怎么粘贴上来的啦?

追答

    要想访问变量注意变量的作用域,这些基础的定义还是从书上看可能更好一些

    回答框可以插入代码格式块,里面按代码的语法去显示内容

追问

你复制的像图片,但是又可以复制文字,还带有数列行是怎么粘贴上来的啦?

追答

回答问题的时候可以插入代码块啊,上面已经写过了啊.我看了下,提问不可以.追问不知道

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-08

 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。

追问

你这种又像图片,又可以复制文字,还有行数的是怎么粘贴上来的呢? 我怎么弄不出来呢。

你这种又像图片,又可以复制文字,还有行数的是怎么粘贴上来的呢? 我怎么弄不出来呢。

追答

我是复制的jdk帮助文档,至于为什么,那是代码编辑器,根据不同的语言有不同的代码编辑器,

题主能把你的题说得更清楚点吗,我想要财富,所以我尽力解答

本回答被网友采纳
第2个回答  2015-09-08
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

追问

你复制的像图片,但是又可以复制文字,还带有数列行是怎么粘贴上来的啦?

追答

点击代码下拉框选择你要的语言(我选的 Java)

会出现一个颜色偏深的区块,在区块中输入内容即可

第3个回答  2015-09-08
Scanner的nextInt() 时,如果输入了非数字,会报异常,所以需要try{}catch(){}捕捉异常

这不是流本身的问题追问

谢谢哈,我想在问你两个问题:
我用了cry catch 后下面的if语句就不能检测到了,他们说用for循环。实在搞不懂。
你复制的像图片,但是又可以复制文字,还带有数列行是怎么粘贴上来的啦?

相似回答