java charAt()数组问题

时间:2019-03-20 16:20:43

标签: java arrays charat

我什至有一些问题,idk实际上是我的代码

package $Random_Projects;
import java.util.Scanner;
public class PhoneBook {
    public static void main (String[] args){
        Scanner myScan = new Scanner(System.in);
        System.out.println("Enter number of entries in the phone book ");
        int num= myScan.nextInt();
        String PBEnteries[]=new String[num];
        for(int i=0; i<PBEnteries.length;i++){
            System.out.println("Enter name and telephone number: ");
            PBEnteries[i]=myScan.nextLine();
        }
        System.out.println("Enter name: ");
        String nameSearch=myScan.next();
        boolean search=false;
        for(int i=0;i<PBEnteries.length;i++)
            for(int j=0;j<nameSearch.length();j++){
                if(nameSearch.charAt(j)==PBEnteries[i].charAt(j)){
                    if(j == nameSearch.length()){
                        search=true;
                        System.out.println(PBEnteries[i]);}
                }
            }
        if(search == false)
            System.out.println("Invalid name.");
    }
}

我的问题在21行:if(nameSearch.charAt(j)==PBEnteries[i].charAt(j)){ 它应该在搜索名称,以便键入名称和电话号码,例如“ Sam 0000”,“ Danial 1111”,并在搜索中将其写为ex。“ Sam”,并应将num甚至整个数组都张贴为“ Sam”。 0000“,但在均衡每个字符时遇到问题 注意:这不是个人程序,他们希望将所有这些都放在具有特定Java知识的数组中,因此它应该将他键入的名称中的每个字符与数组进行比较

输出:

Enter number of entries in the phone book 
3
Enter name and telephone number: 
Enter name and telephone number: 
Mohammed 1212
Enter name and telephone number: 
Ali 0000
Enter name: 
Ali
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(String.java:658)
    at $Random_Projects.PhoneBook.main(PhoneBook.java:21)

1 个答案:

答案 0 :(得分:0)

如果您的entry数组的索引0为空字符串或null,并且从运行输出看起来像您可能的话,那么要求该条目的charAt [0]将会失败。您可能想要包括一个不存储空条目的保护措施,或者,当您查找条目时,可能要检查它是否不是null或空。