Java阵列用户输入验证

时间:2017-11-19 01:41:01

标签: java arrays

NEW EDIT

初学者Java学生。我有一个任务是做一个简单的Java控制台应用程序来监控一家四口猴子的食物消耗。 申请要求是:

2维4x7阵列;一周7天的4只猴子

全家猴子每天平均吃的食物。

每只猴子每周吃的平均食物量。

任何一只猴子每周最少食用的食物。

任何一只猴子每周食用的最大食物量。

没有负数。

用户输入1到50磅。

到目前为止,我每周都有平均食物摄入量,单个猴子部分的食物摄入量最少和最少。当我到达他们时,我将继续工作。我想让代码尽可能简单。

但是,我被困在用户输入验证部分。我想能够验证除1到50之间的正整数以外的任何东西。当运行应用程序时,编译器会发出"找不到符号:变量col。 Col是数组中的列。我不确定我做错了什么。我很确定这是非常简单的事情,但我正在撞墙,因为我无法看到它可能是什么。

任何人都可以帮我看看我做错了什么或者指出了我正确的方向吗? 非常感谢你!

*****************************新编辑:*************** ********************

我有新的代码可行,但每只猴子的每周平均消费量不正确。逻辑看起来似乎没问题。 我该怎么做才能纠正这个问题?

谢谢。

新代码:

package monkeybusiness;

import java.util.Scanner;
import java.util.InputMismatchException;

public class MonkeyBusiness {

    public static void main(String[] args) {

        System.out.println("Welcome to MonkeyBusiness!");
        System.out.println("Feed Four Monkeys.\n");

        // Array - four monkeys (row) and seven days (col)
        int monkeyarray[][] = new int[4][7];

        //User input and validation
        Scanner scanner = new Scanner(System.in);

        for (int row = 0; row < 4; row++) {

            for (int col = 0; col < 7; col++) {

                boolean inputValidate = false;

                int number = 0;

                do {

                    System.out.println("Enter food amount (1-50) for Monkeys "
                            + (row + 1) + " on Day " + (col + 1));

                    try {

                        number = scanner.nextInt();

                        if (number >= 1 && number <= 50) {

                            inputValidate = true;

                        } else {

                            System.out.println("Entry not in range. ");

                            scanner.nextLine();

                        }

                    } catch (InputMismatchException exception) {

                        System.out.println("Entry not a number.");

                        scanner.nextLine();

                    }

                } while (!(inputValidate));

                monkeyarray[row][col] = number;
            }
        }

        // Calculate total daily average for family
        int average;

        int[] perday = new int[]{0, 0, 0, 0, 0, 0, 0};

        for (int col = 0; col < 7; col++) {
            for (int row = 0; row < 4; row++) {
                perday[col] += monkeyarray[row][col];
            }
        }

        int sum = 0;

        for (int row = 0; row < 7; row++) {
            sum += perday[row];
        }

        average = sum / 28;
        System.out.println("");
        System.out.println("*************************************************");
        System.out.println("Daily average amount for "
                + "whole family is: " + average);

        // Calculate average weekly amount of food for each monkey
        // Monkey# 1
        int avg1;
        int sum1 = 0;

        int[] perweek1 = new int[]{0, 0, 0, 0, 0, 0, 0};

        for (int col = 0; col < 7; col++) {
            for (int row = 0; row < 4; row++) {
                perweek1[col] += monkeyarray[row][col];
            }
        }

        for (int row = 0; row < 7; row++) {
            sum1 += perweek1[row];
        }
        System.out.println("Monkey# 1: " + sum1);

        avg1 = sum1 / 7;

        System.out.println("Weekly average amount for "
                + "Monkey# 1 is: " + avg1);

        // Monkey# 2
        int avg2;
        int sum2 = 0;

        int[] perweek2 = new int[]{0, 0, 0, 0, 0, 0, 0};

        for (int col = 0; col < 7; col++) {
            for (int row = 0; row < 4; row++) {
                perweek2[col] += monkeyarray[row][col];
            }
        }

        for (int row = 0; row < 7; row++) {
            sum2 += perweek2[row];
        }

        System.out.println("Monkey# 2: " + sum2);

        avg2 = sum2 / 7;

        System.out.println("Weekly average amount for "
                + "Monkey# 2 is: " + avg2);

        // Monkey# 3
        int avg3;
        int sum3 = 0;

        int[] perweek3 = new int[]{0, 0, 0, 0, 0, 0, 0};

        for (int col = 0; col < 7; col++) {
            for (int row = 0; row < 4; row++) {
                perweek3[col] += monkeyarray[row][col];
            }
        }

        for (int row = 0; row < 7; row++) {
            sum3 += perweek3[row];
        }

        System.out.println("Monkey# 3: " + sum3);

        avg3 = sum3 / 7;

        System.out.println("Weekly average amount for "
                + "Monkey# 3 is: " + avg3);

        // Monkey# 4
        int avg4;
        int sum4 = 0;

        int[] perweek4 = new int[]{0, 0, 0, 0, 0, 0, 0};

        for (int col = 0; col < 7; col++) {
            for (int row = 0; row < 4; row++) {
                perweek4[col] += monkeyarray[row][col];
            }
        }

        for (int row = 0; row < 7; row++) {
            sum4 += perweek4[row];
        }

        System.out.println("Monkey# 4: " + sum4);

        avg4 = sum4 / 7;

        System.out.println("Weekly average amount for "
                + "Monkey# 4 is: " + avg4);

        // Calculate least amount of food for monkey
        int minimum = monkeyarray[0][0];
        for (int row = 0; row < 4; row++) {
            for (int col = 0; col < 7; col++) {
                if (minimum > monkeyarray[row][col]) {
                    minimum = monkeyarray[row][col];
                }
            }
        }

        System.out.println("Least amount of food by any monkey: " + minimum);

        // Calculate most amount of food for monkey
        int maximum = monkeyarray[0][0];
        for (int row = 0; row < 4; row++) {
            for (int col = 0; col < 7; col++) {
                if (maximum < monkeyarray[row][col]) {
                    maximum = monkeyarray[row][col];

                }
            }
        }

        System.out.println("Most amount of food by any monkey: " + maximum);
        System.out.println("*************************************************");
        System.out.println("");
    }

}

1 个答案:

答案 0 :(得分:0)

首先是&#39; col&#39;不在for循环的范围内,在该循环中,您已经编写了验证用户输入0到50之间值的条件。

     if (val > 0 && val <= 50) {
             for (int col = 0; col < 7; col++) {
                 monkeyarray[row][col] = input.nextInt();

             }

         }

如果你想要col,那么你可以有另一个for循环,如上面代码所示

相关问题