下面的代码有变量“name”。 这可能包含名字或姓氏或仅包含名字。 此代码检查变量“name”中是否有空格。 如果存在空间,则它会分裂。

但是,我在下面的案例中得到“错误:线程中的异常”主“java.lang.ArrayIndexOutOfBoundsException:1在Space.main(Space.java:9)”

  • 如果“理查德”之前有空格
  • 如果在“理查德”之后有一个空格,没有第二个单词或第二个字符串。
  • 如果我在“Richard”之后有两个空格,那么它不会将名称保存在lname变量中。

如何解决此错误。

public class Space {
    public static void main(String[] args) {
    String name = "Richard  rinse ";
    if(name.indexOf(' ') >= 0) {
        String[] temp;
        temp = name.split(" ");
        String fname = temp[0];
        String lname = temp[1];
        System.out.println(fname);
        System.out.println(lname);
    } else {
        System.out.println("Space does not exists");}
    }
}

#1楼 票数:3

你必须像这样使用“\\ s”拆分字符串

name.split("\\s+");

#2楼 票数:1

如果有两个空格temp [1]将为空,给定“Richard rinse”,阵列将以这种方式分割

1理查德

2

3冲洗

你应该trim()字符串并做类似的事情

while(name.contains("  "))
    name=name.replace("  "," ");

#3楼 票数:1

String[] parts = name.trim().split("\\s+");

if (parts.length == 2) {
    // print names out
} else {
    // either less than 2 names or more than 2 names
}

trim会删除前导和尾随空格,因为这会导致数组中的前导或尾随空字符串

要分割的标记是一个正则表达式,表示由一个或多个空白字符(空格,制表符等等)组成的任何字符系列。

#4楼 票数:0 已采纳

也许那样:

public class Space {
    public static void main(String[] args) {
        String name = "Richard  rinse ";
        String tname = name.trim().replace("/(\\s\\s+)/g", " ");
        String[] temp;
        temp = name.split(" ");
        String fname = (temp.length > 0) ? temp[0] : null;
        String lname = (temp.length > 1) ? temp[1] : null;
        if (fname != null) System.out.println(fname);
        if (lname != null) System.out.println(lname);
    } else {
        System.out.println("Space does not exists");
    }
}

#5楼 票数:-1

要修剪空白区域,请使用此选项。

public String trimSpaces(String s){
    String str = "";
    boolean spacesOmitted = false;
    for (int i=0; i<s.length; i++){
        char ch = s.chatAt(i);
        if (ch!=' '){
            spacesOmitted = true;
        }
        if (spacesOmitted){
            str+=ch;
        }
    }
    return str;
}

然后在名称的位置使用修剪过的字符串。

  ask by Nash translate from so

未解决问题?本站智能推荐:

2回复

Java字符串拆分使数组索引超出范围错误

我今天遇到了这个不寻常的错误。 谁能解释我在做什么错。 下面是代码: 当我尝试拆分字符串时,上面的代码错误了。 由于某些原因,当我尝试使用“ $”分割每个字符串时,分割不起作用。 有人能解释一下我在做什么错吗? 下面是错误消息:
3回复

如何将多个整数值拆分为索引数组

我在ArrayList有一些Integer 现在,我想将ArrayList的值拆分为一个数组。 假设100是在第一值ArrayList那么相应的数组应该包含1 , 0 , 0
5回复

数组列表错误

嗨,我有这个错误,这是困扰我! 我想要做的是拆分使用“;”的文本文件 并在那之后存储一个ArrayList,但是这个错误不断弹出!! 错误:
1回复

拆分字符串时数组索引出界

我的 txt 文件中有一个数据 sotre 列表,如下所示 我将读取我的 txt 文件中的所有输入并存储到DailyFileData 。 之后,我想从数据中提取IP address和gmail.com ,但我无法实现mail1变量将从我拥有的 txt 文件中存储"abc@gmail.com","10
5回复

如何替换数组中字符串的索引值

我正在做一个关于图灵机的项目,而我在如何替换字符串的某个索引中的字符时遇到问题 示例:如果我在初始磁带中输入:stackoverflow然后在inputArea中编写类似写1的代码,则输出应为1tackoverflow,但可悲的是,我的代码的输出为11111111111111 我试图摆脱
2回复

使用split()数组索引超出范围但循环读取数组后

我正在编写一个Java代码,该代码从列中的文件中读取文本,但是当尝试运行该代码时,会显示超出范围的错误。 仅当我尝试使用命令:arr [1](或更高索引)时,才会发生这种情况。 奇怪的是,以下代码可以正常工作: `循环工作正常(将整个行一个元素一个,然后在下一次while循环迭代中进入下
5回复

拆分数组的索引并将其存储到Java中的新数组中

我正在尝试输入一系列名称并将它们存储到数组中,以便在需要时可以反转打印。 例如, 输入: 输出: 这就是我要解决的问题的方式,我决定首先将所有名称存储到一个数组( _StudentNames )中,然后计划在每个空间拆分该数组并将单独的名称存储到一个新的数组( _StudentNa
3回复

在拆分字符串时避免数组索引超出范围的异常

我正在尝试读取文件并逐行拆分字符串的行。 这是文件中的示例字符串 在这种情况下,第三行在点后没有任何内容。 由于[1]的值为空,我得到了异常,程序停止了。 我该如何避免呢? 我在if循环中检查其是否为空。 这还不够吗?