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

publicclassTest{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);... 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就不行了。
就这么一个简单的要求,请大家一定要帮小弟我解答一下谢谢了。
看吧,这个代码和我的问题一样,我再一次无法解决!!如果再输入工资错误提示跳转,并且重新输入。但是这个问题我一直的不到解决。
展开
 我来答
匿名用户
推荐于2016-11-23
展开全部

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

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

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

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

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

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

好嘛我是新来的
2015-09-08 · TA获得超过356个赞
知道小有建树答主
回答量:120
采纳率:100%
帮助的人:72.8万
展开全部

 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。
更多追问追答
追问
你这种又像图片,又可以复制文字,还有行数的是怎么粘贴上来的呢? 我怎么弄不出来呢。
你这种又像图片,又可以复制文字,还有行数的是怎么粘贴上来的呢? 我怎么弄不出来呢。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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)

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-09-08
展开全部
Scanner的nextInt() 时,如果输入了非数字,会报异常,所以需要try{}catch(){}捕捉异常

这不是流本身的问题
追问
谢谢哈,我想在问你两个问题:
我用了cry catch 后下面的if语句就不能检测到了,他们说用for循环。实在搞不懂。
你复制的像图片,但是又可以复制文字,还带有数列行是怎么粘贴上来的啦?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式