java - JAVA 方法返回意外值
问题描述
我是一个非常新的java程序员,下面的代码是我第一次尝试自己的项目。我确定代码是一团糟,请原谅我。
在下面的代码中,提示用户输入 1 到 50 之间的 5 个值。我将输入值放入 int[]。我想验证数字是否在范围内,因此我将值传递给方法。我的问题:如果值在范围内,则返回它,然后 for 循环递增重复 - 良好行为 如果输入了无效值,则检查完成,将显示错误消息并提示用户重新输入正确的值。如果输入了一个无效条目并在第二次尝试时输入了正确的值,则返回正确的值 - 良好行为 如果输入了两个无效条目,则第二个无效条目以某种方式被传递回 for 循环并被添加到数组中 - 不好行为
我确信我缺少一些简单的东西。
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("you get 5 elements between 01 & 50:");
int a[] = new int[5];
System.out.println("\nEnter all the elements:");
for(int i = 0; i < 5;)
{
int b = in.nextInt();
a[i] = checkNum(b);
i++;
}
System.out.println("Numbers:" + Arrays.toString(a));
in.close();
}
static int checkNum(int z) {
Scanner s = new Scanner(System.in);
if (z>0 && z<51) {
return z;
} else {
System.out.println("Invalid Entry!! Enter a valid number between 01 & 50");
int qz = s.nextInt();
z = qz;
checkNum(qz);
}
return z;
}
解决方案
问题出在你的checkNum()
,你在这里使用递归,我认为你不知道这一点(如果你这样做很好)。
你需要return
checkNum(qz) 值,我已经稍微简化了你的逻辑。
static int checkNum(int z) {
if (z<1 || z>50) // check for false value
{
System.out.println("Invalid Entry!! Enter a valid number between 01 & 50");
Scanner s = new Scanner(System.in);
return checkNum(s.nextInt());
}
return z;
}
推荐阅读
- html - 为什么有时需要使用 CSS 硬件加速来防止文本闪烁?
- twitter-bootstrap - 单击时更改引导下拉链接的背景颜色
- java - Java 2d 更改用户输入的值
- php - 使用 php 和 ajax 在 mysql 中更新 div,无需通过 timmer 重新加载
- python - 我的 guizero 代码的背景颜色没有更新
- reactjs - console.error:“使用有效负载导航的操作...未处理...”
- java - Java Stax如何仅获取特定子节点的值
- html - 引导滚动显示没有发生
- apache-spark - Spark Streaming 数据集
- typescript - 获取所有对象的键“公斤”的所有值