从java文件中拆分字符串?

文件的字符串:


    insert ignominious

    insert elephant

    insert judicious

    insert bastion

    insert fastidious

    insert generous

    insert hilarious

    insert astute

    insert degenerate

    insert courageous

    traverse

    remove judicious

    remove ignominious     

当一行中有两个单词时,我的代码会拆分字符串,但是当它转到“遍历”时,它会给出一个 OutOfBounds 错误,因为它只是一个单词。我不确定您是否需要检查该行上是否只有一个单词才能不拆分以及如何进行拆分。


BufferedReader in = new BufferedReader(new FileReader("file.txt"));

String str;


while ((str = in.readLine()) != null) {

    String[] strArr = str.split(" ");

    if(strArr[1]!=null)

        System.out.println(strArr[0] + ", "+strArr[1]);

    else

        System.out.println(strArr[0]);

}

in.close();


有只小跳蛙
浏览 129回答 2
2回答

POPMUISE

正如@markspace 所说,您应该只检查数组的长度。 while ((str = in.readLine()) != null) {     String[] strArr = str.split(" ");        if(strArr.length > 1)             System.out.println(strArr[0] + ", "+strArr[1]);        else            System.out.println(strArr[0]);}如果这个想法是只打印这样的名字,你可以这样做:while ((str = in.readLine()) != null) {    String[] strArr = str.split(" ");    System.out.println(String.join(", ", strArr));}

米琪卡哇伊

我认为这是解决更大问题的一步。很高兴您开始通过实现代码来解决这个问题,只读取文件并打印出您解析的命令。像这样将较大的问题分解为较小的问题是计算机程序员的一项重要技能。但是,在这种情况下,您的简化忽略了有关输入的详细信息:有些命令有参数,有些没有。一种解决方案是strArr[0]在尝试使用strArr[1]. 此命令确定是否需要任何其他参数。例如,如果strArr[0]is "insert",那么您知道会有一个参数。但是,如果是"traverse",则不应该有任何参数,并且您不应该尝试访问,strArr[1]因为您知道它不存在。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java