【问题标题】:java charAt() array issue [duplicate]java charAt()数组问题[重复]
【发布时间】:2019-03-20 16:20:42
【问题描述】:

尽管如此,我还是有一些问题,我知道这实际上是什么,那是我的代码

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)

【问题讨论】:

  • 这似乎与stackoverflow.com/q/13102045/5646962 重复 - 所描述的问题是您的第一个条目为空的原因
  • @IRomio 你的代码有不止 1 个问题。虽然采用上述方法,但我认为您不会获得所需的输出

标签: java arrays charat


【解决方案1】:

如果您的条目数组的索引 0 有一个空字符串或 null ——并且从你的运行输出看起来你可能——那么请求该条目的 charAt[0] 将失败是有道理的。您可能希望包含一个不存储空条目的守卫,或者,当您查找条目时,您可能希望检查它是否不为空或为空。

【讨论】:

  • 谢谢,但实际上我不知道是什么问题也跳过了第一个循环并转到第二个循环:),如果你知道为什么我会很感激
猜你喜欢
  • 2011-05-09
  • 2018-07-07
  • 2021-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 2019-07-28
相关资源
最近更新 更多