2017-04-16 71 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很高興達到了目的。 請友善接受答案:) –