任何能够引导我朝正确方向前进的人。我正在构建一个简单的标记程序,我从Scanner获取输入并将其插入到我的2D数组中。我想验证我的输入,使其不低于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();
}
}
我不是在寻找答案,我正在寻找更多的推动方向,我可以自己找出答案。
感谢您的帮助。
马特
答案 0 :(得分:0)
Nudge:你没有直接在数组中插入数字,你将它插入一些临时变量,检查它然后决定你是保存它还是再次询问(需要循环)
剧透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;
}
}
答案 1 :(得分:0)
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");
}
您还需要验证输入是否为整数,这可以通过异常处理来完成