Java 从用户输入字符串中删除空格
我试图创建一个代码来删除用户输入字符串中的空格,但在第16行收到一个错误 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常: 15在practice5.main(practice5.java:16) 注意:我们不允许使用Java的replace方法。我需要手动编写代码 这是我的密码:Java 从用户输入字符串中删除空格,java,Java,我试图创建一个代码来删除用户输入字符串中的空格,但在第16行收到一个错误 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常: 15在practice5.main(practice5.java:16) 注意:我们不允许使用Java的replace方法。我需要手动编写代码 这是我的密码: import java.util.Scanner; public class practice5{ public static void main(
import java.util.Scanner;
public class practice5{
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
String line;
System.out.print("Sentence: ");
line = scanner.nextLine();
char phrase[] = line.toCharArray();
int i = 0;
int n = 0;
while(phrase[i] != '\0') {
if(phrase[i] == ' ') {
for(n=i; n<phrase.length; n++) {
phrase[n] = phrase[n+1];
}
}
i++;
}
String output = new String(phrase);
System.out.print(output);
}
}
import java.util.Scanner;
公开课实习5{
公共静态void main(字符串参数[]){
扫描仪=新的扫描仪(System.in);
弦线;
系统输出打印(“句子:”);
line=scanner.nextLine();
char短语[]=line.toCharArray();
int i=0;
int n=0;
while(短语[i]!='\0'){
如果(短语[i]=''){
对于(n=i;n您可以使用String类的函数。只需使用line.replace(“,”)您可以使用String类的函数。只需使用line.replace(“,”)为什么要重新发明轮子?只需使用String的方法:
为什么要重新发明轮子?只需使用String的方法:
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:
15在practice5.main(practice5.java:16)
当在不存在的索引处调用数组元素时,将引发ArrayIndexOutOfBoundsException
在代码的第16行,您调用的是phrase[n+1]
,它适用于除n==(phrase.length-1)
之外的所有情况,因为这样n+1将等于phrase.length
长度从1开始计算,而索引从0开始计算。因此,在上一次迭代中,短语[n+1]
相当于短语[phrase.Length]
,这是一个越界索引
您可以通过将循环迭代次数减少1来纠正它
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:
15在practice5.main(practice5.java:16)
当在不存在的索引处调用数组元素时,将引发ArrayIndexOutOfBoundsException
在代码的第16行,您调用的是phrase[n+1]
,它适用于除n==(phrase.length-1)
之外的所有情况,因为这样n+1将等于phrase.length
长度从1开始计算,而索引从0开始计算。因此,在上一次迭代中,短语[n+1]
相当于短语[phrase.Length]
,这是一个越界索引
您可以通过将循环迭代次数减少1来更正它。错误原因:ArrayIndexOutofBond
假设你的句子是:abc。现在,当你执行你的代码时……这正在发生
第一次迭代:i在索引0上(即在a处)。第二次迭代,i在索引1上(即在b处),第三次迭代,i在索引3上(在c处),再次i增加1,因此现在i=4。现在
while(phrase[i]!='\0')
将返回此类异常,因为您正在比较索引4处的值,但该值不可用。因此,正在发生此类异常。错误原因:ArrayIndexOutofBond
假设你的句子是:abc。现在,当你执行你的代码时……这正在发生
第一次迭代:i在索引0上(即在a处)。第二次迭代,i在索引1上(即在b处),第三次迭代,i在索引3上(在c处),再次i增加1,因此现在i=4。现在
while(phrase[i]!='\0')
将返回此类异常,因为您正在比较索引4处的值,而该值不可用。因此,此类异常正在发生。使用字符匹配器来确定
根据最新的Unicode,字符是否为空白
标准
使用CharMatcher
确定
根据最新的Unicode,字符是否为空白
标准
尝试使用下面的代码可能会有所帮助
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
String line;
System.out.print("Sentence: ");
line = scanner.nextLine();
char phrase[] = line.toCharArray();
String result = "";
for (int i = 0; i < phrase.length; i++) {
if (phrase[i] != ' ') {
result += phrase[i];
}
}
System.out.println(result);
}
publicstaticvoidmain(字符串参数[]){
扫描仪=新的扫描仪(System.in);
弦线;
系统输出打印(“句子:”);
line=scanner.nextLine();
字符短语[]=line.toCharArray();
字符串结果=”;
for(int i=0;i
尝试使用下面的代码,可能会有所帮助
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
String line;
System.out.print("Sentence: ");
line = scanner.nextLine();
char phrase[] = line.toCharArray();
String result = "";
for (int i = 0; i < phrase.length; i++) {
if (phrase[i] != ' ') {
result += phrase[i];
}
}
System.out.println(result);
}
publicstaticvoidmain(字符串参数[]){
扫描仪=新的扫描仪(System.in);
弦线;
系统输出打印(“句子:”);
line=scanner.nextLine();
字符短语[]=line.toCharArray();
字符串结果=”;
for(int i=0;i
您必须停止循环,如果您到达字符串的末尾,您必须停止循环,如果您到达字符串的末尾,您好,我的教授要求我们手动编码。但是谢谢您,我会搜索它。然后您需要停止循环,例如if(I>短语.长度)break;嗨,我的教授要求我们手动编码。但是谢谢,我会搜索它。然后你需要停止循环,例如,如果(I>phrase.length)break;嗨,谢谢,但是我的教授要求我们手动编码:)@Katrina你应该将这段信息添加到你的问题中,这样其他人就可以发布他们关于这方面的答案。你说得对,我现在就编辑它。我还没有意识到已经有一种方法用于它。:)嗨,谢谢,但我的教授要求我们手动编码:)@Katrina你应该将这段信息添加到你的问题中,所以其他rs可以发布他们关于这方面的答案。你说得对,我现在就编辑它。我不知道已经有一种方法用于它了。:)嗨,我可以问一下角色是否每次移动,这里是:短语[n]=短语[n+1];do