Java:陷入困境

时间:2013-11-04 16:28:55

标签: java loops

我正在尝试创建一个在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");
                    }
                }
            }   
        }
    }
}

3 个答案:

答案 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