Java 通过控制台/在运行时使用扫描仪修改2D数组值后出现空值
我正在学习Java,目前还没有很好地掌握代码。我有一个定义了所有值的2D字符串数组,希望给用户一个选项来更改数组中任意行和任意列的值 这是我的密码: 我已全局定义了我的数组,如下所示:Java 通过控制台/在运行时使用扫描仪修改2D数组值后出现空值,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我正在学习Java,目前还没有很好地掌握代码。我有一个定义了所有值的2D字符串数组,希望给用户一个选项来更改数组中任意行和任意列的值 这是我的密码: 我已全局定义了我的数组,如下所示: static int option=0; static String[][] resultCard = new String[][]{ { "", "A", "B", "C", "D", "E"}, { "Account1", "1", "2","3","4","5"
static int option=0;
static String[][] resultCard = new String[][]{
{ "", "A", "B", "C", "D", "E"},
{ "Account1", "1", "2","3","4","5" },
{ "Account2", "6", "7", "8", "9", "10"},
{ "Account3", "11", "12", "13", "14", "15"},
{ "Account4", "16", "17", "18", "19", "20"},
{ "Account5", "21", "22", "23", "24", "25"}
};
之后,我创建了一个方法,在该方法中,我试图检索第一行和最后一列的值,并希望更改这些值
public static void courseModify5(){
int courseId=0;
int row=0;
int newMarks=0;
int oldMarks=0;
Scanner courseModify = new Scanner(System.in);
for(row=1; row<resultCard.length;row++){
System.out.printf("\t Enter "+ row + " for "+ resultCard[row][0]+"\n");
}
System.out.print("Select any course to modify the marks");
courseId = courseModify.nextInt();
while(courseId<=0 || courseId>6){
System.out.println("Enter numbers between 1 to 6");
courseId=courseModify.nextInt();
}
while(courseId>0 || courseId<=6){
if(courseId==1){
System.out.println("The Marks in "+ resultCard[1][0] +" for " + resultCard[0][5] + " are " + resultCard[1][5] );
resultCard[1][5]+=Integer.parseInt(resultCard[1][5]);
System.out.println("Enter new marks");
newMarks=courseModify.nextInt();
resultCard[1][5]=toString(newMarks);
System.out.println("New marks are: "+resultCard[1][5]); //please note that at the moment I am getting the output after changing the value as NULL
break;
}
else if(courseId==2){
System.out.println("The Marks in "+ resultCard[2][0] +" for " + resultCard[0][5] + " are " + resultCard[2][5] );
resultCard[2][5]+=Integer.parseInt(resultCard[2][5]);
System.out.println("Enter new marks");
newMarks=courseModify.nextInt();
resultCard[2][5]=toString(newMarks);
System.out.println("New marks are: "+resultCard[2][5]);
break;
}
else if(courseId==3){
System.out.println("The Marks in "+ resultCard[3][0] +" for " + resultCard[0][5] + " are " + resultCard[3][5] );
resultCard[3][5]+=Integer.parseInt(resultCard[3][5]);
System.out.println("Enter new marks");
newMarks=courseModify.nextInt();
resultCard[3][5]=toString(newMarks);
System.out.println("New marks are: "+resultCard[3][5]);
break;
}
break;
}
}
当我编译并更改数组值时,我得到的输出是空的,所以我有点被困在这里。此外,该值也不会存储在阵列中。任何帮助和指导都将不胜感激。
您好,如果您只是想查看代码,您可以联系,而不是stackoverflow:。嗨,Tom,谢谢您的回复。我试图将例如第1行第5列中的值从5更改为55,并且得到的输出为NULL。我只是想知道我哪里做错了。我有一个字符串数组,用户输入是int,然后将其转换成字符串。我不知道为什么我没有得到用户输入的期望输出。Regardsm我的第一个猜测是courseModify.nextInt有问题。您正在此处读取一个int,但按Enter键时显示的换行符仍在扫描仪读取的输入流中,下一个nextInt将不会返回有效数字,因为\n无法转换为一个数字。尝试Integer.parseIntcourseModify.nextLIne读取您的数字,看看这是否解决了您的问题。使用调试器,我建议使用Netbeans,否则仅在源代码中传递字符位置太浪费了。顺便说一句,您不必枚举ifcourseId==1,只需使用变量:resultCard[courseId][5]+=…resultCard[1][5]+=。。。将附加一个字符串,如1+2生成12,而不是整数和!,因为您有一个字符串数组。更好的样式是创建一个类记录,第一个字段使用单独类型的字段字符串,其余字段使用整数。