2017-04-16 72 views
0

我有一个填充了检查结果的二维数组。数组包含名称。用户输入一些名称,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); } } 
+3

你的大括号是怎么回事? Java不是口齿不清的。 – Carcigenicate

+0

'boolean = namesmatch = namechk'是一个错字还是你实际上在你的源代码中有什么?另外,*“错误”*没有多大帮助。 *你究竟得到了什么错误? – domsson

+0

你知道你可以做'if(namesmatch){...',对吧? –

回答

0

这应该工作。 声明布尔namesmatch = false。在内循环(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"); 
    } } } 
+0

你不能将标记添加到代码顺便说一句。为了强调您更改的行,请使用注释。 – Carcigenicate

+0

欢迎来到SO。请参阅http://stackoverflow.com/help/someone-answers – c0der

+0

@Potato很高兴达到了目的。 请友善接受答案:) –