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就不行了。
就这么一个简单的要求,请大家一定要帮小弟我解答一下谢谢了。
看吧,这个代码和我的问题一样,我再一次无法解决!!如果再输入工资错误提示跳转,并且重新输入。但是这个问题我一直的不到解决。 展开
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就不行了。
就这么一个简单的要求,请大家一定要帮小弟我解答一下谢谢了。
看吧,这个代码和我的问题一样,我再一次无法解决!!如果再输入工资错误提示跳转,并且重新输入。但是这个问题我一直的不到解决。 展开
4个回答
推荐于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);
}
}
}
更多追问追答
追问
谢谢哈,我想在问你两个问题:
我用了cry catch 后下面的if语句就不能检测到了,他们说用for循环。实在搞不懂。
你复制的像图片,但是又可以复制文字,还带有数列行是怎么粘贴上来的啦?
追答
要想访问变量注意变量的作用域,这些基础的定义还是从书上看可能更好一些
回答框可以插入代码格式块,里面按代码的语法去显示内容
展开全部
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-09-08
展开全部
Scanner的nextInt() 时,如果输入了非数字,会报异常,所以需要try{}catch(){}捕捉异常
这不是流本身的问题
这不是流本身的问题
追问
谢谢哈,我想在问你两个问题:
我用了cry catch 后下面的if语句就不能检测到了,他们说用for循环。实在搞不懂。
你复制的像图片,但是又可以复制文字,还带有数列行是怎么粘贴上来的啦?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询