如果我输入 3 个对象
aakash
12323
aakshit
24r352
rahul
12323
如果我将此作为输入并输入搜索字符串“aa”,那么它只给出与搜索输出匹配的第一个字符串
aakash
12323
为什么不也 aakshit
import java.util.Scanner;
import java.io.*;
public class DA_2_searching {
String name,phone_number;
Scanner s = new Scanner(System.in);
DA_2_searching()
{
System.out.print("Enter the Details");
name=s.nextLine();
phone_number= s.nextLine();
}
void search()
{
String search;
search=s.nextLine();
if(name.startsWith(search))
{
System.out.println(name);
System.out.println(phone_number);
}
}
public static void main(String args[])
{
int n;
Scanner s = new Scanner(System.in);
n= s.nextInt();
DA_2_searching obj[]= new DA_2_searching[n];
for(int i=0;i<n;i++)
{
obj[i]= new DA_2_searching();
}
for(int i=0;i<n;i++)
{
obj[i].search();
}
}
}
最佳答案
您的问题的原因是,您一次仅搜索一个对象。调用 search()
函数的 for 循环一次仅将一个对象与搜索输入进行比较。
在 for
循环中,您仅针对一个 DA_2_searching
对象(即第一个对象)调用搜索函数带有索引i - obj[i]
)。但是您想要搜索您创建的每个 DA_2_searching
对象,这意味着您必须重新设计 search()
函数,以便它获取所有 DA_2_searching
对象并将它们与搜索-字符串进行比较。
这是我的解决方案:
import java.util.Scanner;
public class DA_2_searching {
private String name, phone_number;
private static DA_2_searching[] allPersons;
private static Scanner s = new Scanner(System.in);
public DA_2_searching() {
System.out.println("Enter the Details: ");
System.out.print("Name: ");
this.name = s.next();
System.out.print("Phone-Number: ");
this.phone_number = s.next();
System.out.println("\nNext: ");
}
public static void search() {
System.out.println("Type a word to search for: ");
String toSearch = s.next();
for(DA_2_searching person : allPersons) {
if(person.name.contains(toSearch)) { //contains is better for searching.
System.out.println("Result: " + person.name + " | " + person.phone_number);
}
}
System.out.println("\n");
if(!toSearch.equals("exit")) {
search();
}
}
public static void main(String args[]) {
System.out.print("Amount of Entries: ");
int n = s.nextInt();
System.out.println("");
allPersons = new DA_2_searching[n];
//Creating Persons
for(int i = 0; i < n; i++) {
allPersons[i] = new DA_2_searching();
}
//initializing search
search();
}
}
关于java - 它只给出一个字符串作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57869943/