java - 它只给出一个字符串作为输出

标签 java arrays string substring startswith

如果我输入 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/

相关文章:

java - 仅在 Java 中通过查看字符串的特定部分来删除字符串数组的重复项

java - 使用 Stagemonitor 查找指标

java - Java 中字母的值

java - Java中如何分割多行字符串

javascript - 带分割的字符串格式占位符用于分隔字符串

java - Elasticsearch:使用 Java 添加手动映射

javascript - 存储一个数组以在不同页面上访问

javascript - 为什么我收到有关 "unexpected non-whitespace after JSON data"的错误消息

arrays - 为什么我的 Swift 应用程序在我尝试解包可选时会抛出 fatal error ?

php - 俄罗斯方 block