鱼C论坛

 找回密码
 立即注册
查看: 2948|回复: 9

[已解决]Java萌新问题,求大佬解答

[复制链接]
发表于 2020-4-21 14:08:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在这里我要写的是关于翻转从键盘输入的一个三位数的小程序,现在遇到的问题是,当我输入不符合判断语句的数字时,它会让我继续输入,然后问题来了----当我输入一个符合判断语句的数字时,前边我输入的不符合的数字也得到了翻转并打印了出来,想知道这是为啥?
  1. import java.util.Scanner;

  2. public class TurnNum {
  3.        
  4.         public TurnNum() {
  5.         }
  6.        
  7.        
  8.         public void turnAround() {
  9.                
  10.                 System.out.println("请输入一个三位数:");
  11.                
  12.                 //获取用户从键盘输入的字符
  13.                 Scanner data = new Scanner(System.in);
  14.                 int n = data.nextInt();//判断是否为整数,如果不是会报错
  15.                
  16.                 //对三位数进行判断
  17.                 if (n > 999 || n < 100) {
  18.                         System.out.println("您输入的数不是三位数,请继续输入:");
  19.                         turnAround();
  20.                 }
  21.                
  22.                 //分别获取百、十、个位数字
  23.                 int hun = n / 100;
  24.                 int ten = (n - hun * 100) / 10;
  25.                 int ge = n - hun*100 - ten * 10;
  26.                
  27.                 String s1 = "" + ge;
  28.                 String s2 = "" + ten;
  29.                 String s3 = "" + hun;
  30.                 System.out.println(s1 + s2 + s3);
  31.         }
  32. }
复制代码


最佳答案
2020-4-21 14:14:24
你把这个函数类型改为int,然后
在不符合条件时,调用完turnAround()后return 0;

运行结果就是这样

运行结果就是这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-21 14:14:24 | 显示全部楼层    本楼为最佳答案   
你把这个函数类型改为int,然后
在不符合条件时,调用完turnAround()后return 0;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-21 14:23:55 | 显示全部楼层
qiuyouzhi 发表于 2020-4-21 14:14
你把这个函数类型改为int,然后
在不符合条件时,调用完turnAround()后return 0;

管用了诶,这是为啥呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-21 14:25:17 From FishC Mobile | 显示全部楼层
你这个程序的逻辑是不正确的,比如说,你输入1000,在判断后再次调用这个程序,但是调用完成后又会继续执行if判断后面的代码。事实上,在输入的数字不是三位数时,应当仅让用户重新输入数字就行了,而不是重新调用程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-21 14:26:32 | 显示全部楼层
萌萌哒的小虎崽 发表于 2020-4-21 14:23
管用了诶,这是为啥呢?

因为在你输入正确后,不会调用turnAround
然后内层的turnAround调用成功之后呢,
就会回到上一层调用这个turnAround的
函数,然后那个函数会继续运行(也就是翻转输入的数字)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-21 14:30:07 | 显示全部楼层
qiuyouzhi 发表于 2020-4-21 14:14
你把这个函数类型改为int,然后
在不符合条件时,调用完turnAround()后return 0;

不必修改函数返回值类型,返回值为void也可以有return语句
直接在if语句块中调用完turnAround()之后,写上return;就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-21 14:31:09 | 显示全部楼层
sunrise085 发表于 2020-4-21 14:30
不必修改函数返回值类型,返回值为void也可以有return语句
直接在if语句块中调用完turnAround()之后,写 ...

Oh,学习了~
那return null;是不是也可以?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-21 14:33:04 | 显示全部楼层
qiuyouzhi 发表于 2020-4-21 14:31
Oh,学习了~
那return null;是不是也可以?

好像不行。那样也是有返回值的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-21 14:33:22 | 显示全部楼层
sunrise085 发表于 2020-4-21 14:33
好像不行。那样也是有返回值的。


我去试试哈
好吧,确实不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-3 16:15:37 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-5 13:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表