【问题标题】:2D array scanner validation二维阵列扫描仪验证
【发布时间】:2015-03-05 14:34:43
【问题描述】:

任何能够引导我走向正确方向的人。我正在构建一个简单的标记程序,我从 Scanner 获取输入并将其插入到我的二维数组中。我想验证我的输入,使其不低于 0 或高于 100,但如果我的数字不正确,我不希望数组移动到下一个位置。

public static void main(String[] args) 
{
    Scanner input = new Scanner(System.in);//naming the scanner
    String [] student = {"Mark","Jen","Gaby","John","Michael","James"};
    String [] subject = {"Digital electronics","Analogue electronics","Maths","Networks","Telecommunications",
            "Computer applications","Software developemnt","Workshop"};
    String [] printSub = {"Digit","Analo","Maths","Netwo","Telec","Appli","Softw","Works"};
    int maxRow = 6;//setting max row amount int
    int maxCol = 8;//set max column amount int
    int [][] mark = new int [maxRow][maxCol];//declaring the int array and setting the row & column max.
    int i = 0, j = 0;//declaring i and j for use in the for loops 
    int maxMark = 0;//declaring for use in if statement to find highest mark
    int minMark =100;//Declaring for use in if statement to find lowest mark

    for(i = 0; i < maxRow; i++)
    {
        for(j = 0; j < maxCol; j++)
        {
            System.out.print("Please enter "+student[i]+" mark for "+subject[j]+" and press return :");
            mark[i][j]= input.nextInt();
        }
    }

    for(i=0; i < maxRow; i++)
    {           
        for(j=0; j < maxCol; j++)
        {
            if (i == 0 && j == 0)
            {
                System.out.print("Student  \t");
                for(int sub = 0; sub < 8; sub++)
                {
                    System.out.print(printSub [sub]+"\t");
                }
                System.out.println();
                System.out.println();
            }
            if(i < maxRow && j == 0)
            {
                System.out.print(student[i]+"\t \t  ");
            }

            System.out.print(mark [i][j]+"\t");
        }
        System.out.println();
        System.out.println();
    }
}

我不是在寻找答案,而是在寻找更多的推动力,让我自己能够找出答案。

提前感谢您的帮助。

马特

【问题讨论】:

    标签: java arrays multidimensional-array java.util.scanner


    【解决方案1】:

    微调:您不直接将数字插入到数组中,而是将其插入到某个临时变量中,检查它然后决定是保存还是再次询问(需要循环时)


    剧透1:这是完整的解决方案,如果您想自己做,请不要看:):

        for (i = 0; i < maxRow; i++) {
            for (j = 0; j < maxCol; j++) {
                System.out.print("Please enter ");
                int number = input.nextInt();
                boolean isItOk = false;
                while (isItOk == false) {
                    if (number < 0 || number > 100) {
                        System.out.println("You shall not insert a value below 0 or bigger than 100! Try it again");
                        number = input.nextInt();
                    } else {
                        isItOk = true;
                    }
                }
                mark[i][j] = number;
            }
        }
    

    Spoiler 2:这是一个更好的代码,但对于初学者,我会推荐 Spoiler 1 的方法,因为它总是可用的。在更复杂的问题中,Spoiler 2 解决方案并不总是可行的。

        for (i = 0; i < maxRow; i++) {
            for (j = 0; j < maxCol; j++) {
                System.out.print("Please enter ");
                int number = input.nextInt();
                while (number < 0 || number > 100) {
                    System.out.println("You shall not insert a value below 0 or bigger than 100! Try it again");
                    number = input.nextInt();
                }
                mark[i][j] = number;
            }
        }
    

    【讨论】:

      【解决方案2】:
          Scanner s = new Scanner(System.in);
          int number =0;
          System.out.print("Please enter ");
          while(true)
          {
              number = s.nextInt();
              if(number > -1 && number < 101)
                  break;
              System.out.println("Marks should be between  0 and 100, Please enter");
      
          }
      

      还需要验证输入是否为整数,可以通过异常处理来完成

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多