Java 使用数组和多个';单词';串连

Java 使用数组和多个';单词';串连,java,arrays,while-loop,split,java.util.scanner,Java,Arrays,While Loop,Split,Java.util.scanner,我对java非常陌生,因为在中,我几乎无法编写20行基本代码并让它们正常工作,在新的级别上,我有两个问题可能与之相关,也可能与之无关,因为它们来自于我个人编写的非常相似的代码片段 import java.util.Scanner; public class StringCW { public static void main (String [] args) { String word = ""; while(!(word.equals("stop"))){

我对java非常陌生,因为在中,我几乎无法编写20行基本代码并让它们正常工作,在新的级别上,我有两个问题可能与之相关,也可能与之无关,因为它们来自于我个人编写的非常相似的代码片段

import java.util.Scanner;

public class StringCW {


public static void main (String [] args) {

    String word = ""; 

    while(!(word.equals("stop"))){


        Scanner capconversion = new Scanner(System.in);
        System.out.println("Enter word:" );

        word = capconversion.next(); 
        String lower = word.toLowerCase();
        word = lower;
        System.out.println("conversion = " + word);

    }


    System.out.println("ending program");


        }
    }
}
这是我的第一段代码,它被设计用来获取任何字符串并将其转换为小写,但是如果我要打印任何由空格分隔的内容,例如:“wewewefrdwsrgdfgdfg dfgdfg dfgdfg”只有第一个“字”将被打印和转换,我也会从cap转换中得到内存泄漏,虽然我不明白这意味着什么,也不知道如何修复它

我的第二个问题可能也是这样

import java.util.Scanner;

public class splitstring {

private static Scanner capconversion;

public static void main (String [] args) {

    String word = ""; 

    while(!(word.equals("stop"))){

        capconversion = new Scanner(System.in);
        System.out.println("Enter word:" );

        word = capconversion.next(); 
        String lower = word.toLowerCase();
        String[] parts = lower.split(" ");
        parts [0] = "";
        parts [1] = "";
        parts [2] = "";
        parts [3] = "";
        parts [4] = "";


        System.out.println("conversion = " + lower
        parts [0] + parts [1] + parts [2] + parts [3] + parts [4]);

        }

        System.out.println("ending program");
    }
}
这是第二段代码,旨在完成与前一段相同的工作,只是在新行上打印出每个“单词”,然后返回到输入部分,直到输入停止命令

我得到的错误是

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    at splitstring.main(splitstring.java:21)

但是,我不明白错误是从哪里来的,这是因为您使用的是
Scanner.next()
,它返回单个标记,默认情况下使用空格作为标记分隔符

如果您想一次捕获一整行,也许应该使用
nextLine()

至于您的
阵列索引OutofBoundsException
,其原因基本相同。您正在对单个单词调用
split
,因此返回的数组只有一个元素(元素0)。当您尝试设置元素1时,它超出了数组的边界,因此出现异常


请注意,这里的内容与
toLowerCase()

什么是
splitstring.java:21
?请遵守Java命名约定,类应该在
PascalCase
中。我复制粘贴了我得到的错误消息,我使用eclipse作为我的编码程序,正如我所说的,我对Java了解不多,所以我希望得到您的帮助。guysIt告诉您错误在第21行。第21行是什么?第21行是部件[1]=“”;不要每次在循环中都创建
扫描器。这很好,它在第一段代码中解决了问题,但是在第二段代码中,我仍然收到错误消息,在将:next()替换为nextLine()之后。@BenBowen:你看了我的解释了吗?假设
split
返回一个至少包含5个元素的数组。你为什么要硬编码访问
部分[0]
部分[1]
等等?提示:使用
parts.length
找出数组中有多少元素…我尝试了几次使用你的建议,但我真的找不到方法。我确实读了你的第一个解释,但是直到我读了你发布的第二个部分,我才明白。感谢parts.length的建议,这更有意义。但是,如何从用户输入中获取整数值以设置数组的长度?@BenBowen:您正在使用
拆分创建数组
-用户输入已经在确定数组的长度。