Java萌新问题,求大佬解答
在这里我要写的是关于翻转从键盘输入的一个三位数的小程序,现在遇到的问题是,当我输入不符合判断语句的数字时,它会让我继续输入,然后问题来了----当我输入一个符合判断语句的数字时,前边我输入的不符合的数字也得到了翻转并打印了出来,想知道这是为啥?import java.util.Scanner;public class TurnNum {
public TurnNum() {
}
public void turnAround() {
System.out.println("请输入一个三位数:");
//获取用户从键盘输入的字符
Scanner data = new Scanner(System.in);
int n = data.nextInt();//判断是否为整数,如果不是会报错
//对三位数进行判断
if (n > 999 || n < 100) {
System.out.println("您输入的数不是三位数,请继续输入:");
turnAround();
}
//分别获取百、十、个位数字
int hun = n / 100;
int ten = (n - hun * 100) / 10;
int ge = n - hun*100 - ten * 10;
String s1 = "" + ge;
String s2 = "" + ten;
String s3 = "" + hun;
System.out.println(s1 + s2 + s3);
}
}
你把这个函数类型改为int,然后
在不符合条件时,调用完turnAround()后return 0; qiuyouzhi 发表于 2020-4-21 14:14
你把这个函数类型改为int,然后
在不符合条件时,调用完turnAround()后return 0;
管用了诶,这是为啥呢? 你这个程序的逻辑是不正确的,比如说,你输入1000,在判断后再次调用这个程序,但是调用完成后又会继续执行if判断后面的代码。事实上,在输入的数字不是三位数时,应当仅让用户重新输入数字就行了,而不是重新调用程序。 萌萌哒的小虎崽 发表于 2020-4-21 14:23
管用了诶,这是为啥呢?
因为在你输入正确后,不会调用turnAround
然后内层的turnAround调用成功之后呢,
就会回到上一层调用这个turnAround的
函数,然后那个函数会继续运行(也就是翻转输入的数字) qiuyouzhi 发表于 2020-4-21 14:14
你把这个函数类型改为int,然后
在不符合条件时,调用完turnAround()后return 0;
不必修改函数返回值类型,返回值为void也可以有return语句
直接在if语句块中调用完turnAround()之后,写上return;就可以了 sunrise085 发表于 2020-4-21 14:30
不必修改函数返回值类型,返回值为void也可以有return语句
直接在if语句块中调用完turnAround()之后,写 ...
Oh,学习了~
那return null;是不是也可以? qiuyouzhi 发表于 2020-4-21 14:31
Oh,学习了~
那return null;是不是也可以?
好像不行。那样也是有返回值的。 sunrise085 发表于 2020-4-21 14:33
好像不行。那样也是有返回值的。
我去试试哈
好吧,确实不行 {:7_146:}
页:
[1]