Java 数组线性搜索总是返回"Book is not found" ?



当我插入参数时,搜索总是返回"未找到"-即使搜索到的值被输入到数组中?

import java.util.Scanner;
public class assignment {
public static void main (String[]   args) 
{
Scanner sc = new Scanner(System.in);

String searchValue = "";
String [] BookID = new String [3];
String [] Booktitle = new String [3];
//input the BookID    
System.out.println("Enter the 12 BookID");
for (int a = 0 ; a < BookID.length; a++)
{
System.out.print("BookID :");
BookID[a] = sc.next();
}

//Input the book title        
for (int b = 0 ; b < Booktitle.length ; b++)
{
System.out.print("Booktitle :");
Booktitle[b] = sc.next();
}
//The Linear search on BookID
System.out.print("Enter BookID to find :");
for(int c = 0; c < BookID.length; c++)
{
searchValue = sc.next();
if(searchValue.equals(BookID))
System.out.print("BookID is found : ");
else 
System.out.print("BookID is not found : ");
}

}
}


我希望结果返回如下:if input BookID 112。线性搜索将返回"0";BookID被发现:";而不是else语句。

试着打印出你想要找到的bookId的值,看看字符串中是否有任何东西可能导致它不相等。此外,您可以使用将字符串转换为整数

Integer.parseInt("BookId"(;

equals失败的几率较小,您也可以将数组的de更改为int数组,而不是String数组。

这段代码有一些基本的东西是正确的,但它可能会更好一点。我所做的一些更改是为了保持Java约定(这样代码更容易阅读和理解(,还有一些是功能性的。我将它们添加为评论。

import java.util.Scanner;
public class Assignment {
public static void main (String[] args) 
{
Scanner sc = new Scanner(System.in);

String searchValue = "";
String [] bookIDs = new String [3]; //lowercase for the attribute name (convention)
String [] bookTitles = new String [3]; //plural for the array (convention)
//input the BookID    
System.out.println("Enter the Book ID");
for (int i = 0 ; i < bookIDs.length; i++) { //you can re-use the i in all loops
System.out.print("Enter " + i + " Book ID: ");
bookIDs[i] = sc.next();
}

//Input the book title        
for (int i = 0 ; i < bookTitles.length ; i++) {
System.out.print("Enter " + i + " Book title: ");
bookTitles[i] = sc.next();
}
//The Linear search on BookID
System.out.print("Enter Book ID to find: ");
searchValue = sc.next(); //NOTE: this is your first mistake. read out of the loop
for(int i = 0; i < bookIDs.length; i++) {
if(searchValue.equals(bookIDs[i])) { //NOTE: this is your second mistake - you wanted the array value, not the array
System.out.println("BookID is found in position "+i);
break;  //suggestion - stop the loop when found.
}
else {
System.out.println("BookID is not found in position "+i);
}
}
sc.close();  //NOTE: important to close scanners at the end.
}
}

祝你学习顺利。

最新更新