Java 使用数组和多个';单词';串连
我对java非常陌生,因为在中,我几乎无法编写20行基本代码并让它们正常工作,在新的级别上,我有两个问题可能与之相关,也可能与之无关,因为它们来自于我个人编写的非常相似的代码片段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"))){
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:您正在使用拆分创建数组
-用户输入已经在确定数组的长度。