Java 二维阵列扫描仪验证
任何能把我引向正确方向的人。我正在构建一个简单的标记程序,从扫描仪中获取输入并将其插入到我的2D阵列中。我想验证我的输入,使其不低于0或高于100,但如果我的数字不正确,我不希望数组移动到下一个位置Java 二维阵列扫描仪验证,java,arrays,multidimensional-array,java.util.scanner,Java,Arrays,Multidimensional Array,Java.util.scanner,任何能把我引向正确方向的人。我正在构建一个简单的标记程序,从扫描仪中获取输入并将其插入到我的2D阵列中。我想验证我的输入,使其不低于0或高于100,但如果我的数字不正确,我不希望数组移动到下一个位置 public static void main(String[] args) { Scanner input = new Scanner(System.in);//naming the scanner String [] student = {"Mark","Jen","Gaby"
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();
}
}
publicstaticvoidmain(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);//命名扫描仪
String[]student={“Mark”、“Jen”、“Gaby”、“John”、“Michael”、“James”};
String[]主题={“数字电子”、“模拟电子”、“数学”、“网络”、“电信”,
“计算机应用”、“软件开发”、“工作坊”};
字符串[]printSub={“数字”、“分析”、“数学”、“网络”、“电视”、“应用”、“软件”、“作品”};
int maxRow=6;//设置最大行数int
int maxCol=8;//设置最大列数int
int[][]mark=new int[maxRow][maxCol];//声明int数组并设置行和列的最大值。
int i=0,j=0;//声明i和j用于for循环
int maxMark=0;//声明在if语句中用于查找最高标记
int minMark=100;//声明在if语句中用于查找最低标记
对于(i=0;i
我不是在寻找答案,我是在寻找一个方向,我可以自己找出答案更多的推动
提前谢谢你的帮助
Matt微移:您不直接将数字插入数组,而是将其插入到某个临时变量中,检查它,然后决定是保存它还是再次请求(需要循环时)
剧透1:这里有一个完整的解决方案,如果你想自己做,不要看那里:): (i=0;i
{
对于(j=0;j100){
System.out.println(“不能插入小于0或大于100的值!请重试”);
number=input.nextInt();
}否则{
isItOk=真;
}
}
标记[i][j]=编号;
}
}
扰流板2:这是一个更好的代码,但是对于初学者,我建议使用扰流板1,因为它总是可用的。在更复杂的问题中,扰流板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;
}
}
(i=0;i{
对于(j=0;j100){
System.out.println(“不能插入小于0或大于100的值!请重试”);
number=input.nextInt();
}
标记[i][j]=编号;
}
}
Scanner s=新的扫描仪(System.in);
整数=0;
系统输出打印(“请输入”);
while(true)
{
编号=s.nextInt();
如果(编号>-1&&编号<101)
打破
System.out.println(“标记应介于0和100之间,请输入”);
}
您还需要验证输入是否为整数,这可以通过异常处理完成
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;
}
}
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");
}