为什么我无法获得具有指定条件的数组索引?

时间:2017-04-05 05:32:35

标签: java arrays search

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(),它假定获取数组对象的索引位置以便稍后打印。它提示用户输入一个String&#39; author&#39;,接受并比较之前为Array设置的另一个String的相等性。

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

为什么if语句无法正常工作?谁能告诉我我做错了什么?非常感谢

1 个答案:

答案 0 :(得分:5)

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

由于if语句后面有一个不需要的分号,所以会发生什么:

  1. 检查并评估该陈述。
  2. &#39;;&#39;标志着声明的结束
  3. 始终执行以下代码块中的代码。
  4. 尝试删除&#39;;&#39;然后再试一次。