2017-04-05 36 views
0
public class Book { 

private String Author; 
private Book[]Details; 

public void setAuthor()      
{ 

} 
public String getAuthor() 
{ 
    return Author;  
} 
//Author already set for Array 

public int getviewInfo() 
{ 
    System.out.println("Enter author"); 
    Scanner kb= new Scanner(System.in); 
    int index=0; 
    String author= kb.next(); 
    for(int i=0 ;i<Details.length; i++)  
    { 
     if((Details[i].getAuthor()).equals(author));  //compare both author 
     { 
      index=i;   
      //loop enters here even when author input not equal to getAuthor, why?? 
      System.out.println("SAME author");  //& will continue to run this i times   
     } 
    } 
    System.out.println("sameindex "+index);  //therefore index is wrong 
    return index; 
} 

我有一个方法getviewInfo()它假设获取数组对象的索引位置以供以后打印。它提示用户输入一个字符串“作者”,并将其与之前为该数组设置的另一个字符串进行比较。为什么我无法获得具有指定条件的数组索引?

问题是,在for循环中,比较这两个字符串的if语句即使在字符串作者输入不同于另一个来自Details[i].getAuthor()的字符串时也会进入,我得到的索引是错误的。

为什么if语句不能正常工作?有人能告诉我我做错了什么吗?感谢这么多

回答

5

看起来你的问题是在这里: if((Details[i].getAuthor()).equals(author));

既然你的if语句会发生什么是后有不需要的分号:

  1. 的语句进行检查和评估。
  2. ';'标记语句结束
  3. 以下代码块中的代码始终执行。

尝试删除';'然后再试一次。

+0

也索引初始值= 0,所以即使没有匹配,方法将返回0。你应该返回-1如果匹配没有找到 –

+0

谢谢,@ MaximTulupov绝对正确。 – Omrisk

+0

非常感谢,犯了一个愚蠢的语法错误,删除分号解决了问题。 – Jackaliar

相关问题