我正在尝试创建一个在0到100之间占用12个整数的程序,并将它们放入一个数组中......然后将两个数组相乘,得到的6个整数应该进入最终数组。但是,当我尝试执行时,我能够进入整数但没有任何反应,我有一种偷偷摸摸的怀疑,我被困在某个地方的循环中。任何建议将不胜感激。
注意
我没有包含第二个阵列的计算,因为那不是问题所在。我甚至无法到达第二个阵列,因为它卡在某个地方
import java.util.*;
public class Calc {
static int[] level = { 60, 40, 20, 30, 40, 70 };
public static void workOut()
{
// after accepting an array of 12 ints should compute array of 6
// array declaration
int[] nums = new int[12];
Scanner sc = new Scanner(System.in);
System.out.println("Enter int 1 then int 1a,");
System.out.print("then int 2 then int 2a etc, until int 6 and 6a");
if (!sc.hasNextInt())
{
System.out.println("Must be Int!");
}
else
{
while (sc.hasNextInt())
{
for (int i = 0; i < 12; i++)
{
if (sc.nextInt() >= 0 && sc.nextInt() <= 100)
{
nums[i] = sc.nextInt();
}
else
{
System.out.print("Number between 0 and 100 please");
}
}
}
}
}
}
答案 0 :(得分:3)
执行此操作时:
if (sc.nextInt() >= 0 && sc.nextInt() <= 100)
{
nums[i] = sc.nextInt();
}
每3次读取就丢掉2个输入值。看起来不对,是吗?您可能希望存储输入然后进行比较:
int value = sc.nextInt();
if (value >= 0 && value <= 100)
{
nums[i] = value;
}
您可能还想检查有效输入。
for (int i = 0; i < 12; i++)
{
int value;
do {
value = sc.nextInt();
} while (value < 0 || value > 100);
nums[i] = value;
}
答案 1 :(得分:1)
您正在以完全错误的方式阅读整数。
如果你想读12个整数,for循环应该是第一个循环,那么你应该控制输入整数是否有效。
for (int i = 0; i < 12; i++)
{
int value = sc.nextInt();
while(value < 0 || value > 100)
{
value = sc.nextInt();
}
nums[i] = value;
}
答案 2 :(得分:0)
而不是做
if (sc.nextInt() >= 0 && sc.nextInt() <= 100) {
nums[i] = sc.nextInt();
}
之前将sc.nextInt()
分配给某个值。因为你现在正在做的事情是不必要地检索nextInt()
并失去它的价值。
在while
循环的开头直接更改代码,如下所示:
while (sc.hasNextInt()) {
int myInt = sc.nextInt();
// ... rest of the code