我有一个填充了考试成绩的2D数组。数组包含名称。用户输入一些名称,并且prog检查该名称是否等于存储在数组中的任何其他名称。如果它们匹配,则打印出包含该名称的整行。如果没有这样的名称,它应该打印出“错误”。我需要使用一个布尔变量来检查是否找到了什么。但问题是我无法想出如何检查循环中发现的东西。当我使用这一行时:
boolean=namesmatch=namechk.equalsIgnoreCase(math[x][1]);
只有当用户输入名字时它才会正确,因为x = 0。如果用户输入任何其他名称,则打印出所需的行,然后输出“错误”。我该怎么做才能摆脱这个“错误”?
public class Math extends StudentCharts {
public Math(){
math = new String [3][3];
math[0][0]="math"; math[0][1]="Bill Gates"; math[0][2]="49";
math[1][0]=math[0][0]; math[1][1]="John Doe"; math[1][2]="12";
math[2][0]=math[0][0]; math[2][1]="Paul Allen"; math[2][2]="31"; }
public void prnt (String namechk){
int x=0;
int y=0;
boolean namesmatch=namechk.equalsIgnoreCase(math[x][1]);
for (x=0; x<3; x++) {
if (namechk.equalsIgnoreCase(math[x][1])) {
for (y=0; y<3; y++) {
System.out.print(math[x][y]+" ");
} } }
if (!namesmatch) {
System.out.println("error");
} } }
这是主要的课程
public class Studentsarrays {
public static void main(String[] args) {
Math chr1 = new Math();
Scanner user = new Scanner(System.in);
System.out.println("Enter full name, please");
String namecheck = user.nextLine();
chr1.prnt(namecheck); } }
答案 0 :(得分:0)
这应该有效。 声明boolean namesmatch = false。在内部for循环(y循环)中,设置namesmatch = true。只有在至少有一个匹配时,namesmatch才会设置为true。
public class Math extends StudentCharts {
public Math(){
math = new String [3][3];
math[0][0]="math"; math[0][1]="Bill Gates"; math[0][2]="49";
math[1][0]=math[0][0]; math[1][1]="John Doe"; math[1][2]="12";
math[2][0]=math[0][0]; math[2][1]="Paul Allen"; math[2][2]="31"; }
public void prnt (String namechk){
int x=0;
int y=0;
**boolean namesmatch=false;**
for (x=0; x<3; x++) {
**if (namechk.equalsIgnoreCase(math[x][1]))** {
for (y=0; y<3; y++) {
System.out.print(math[x][y]+" ");
**namesmatch=true;**
} } }
if (!namesmatch) {
System.out.println("error");
} } }