Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从用户输入字符串中删除空格_Java - Fatal编程技术网

Java 从用户输入字符串中删除空格

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(

我试图创建一个代码来删除用户输入字符串中的空格,但在第16行收到一个错误

线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常: 15在practice5.main(practice5.java:16)

注意:我们不允许使用Java的replace方法。我需要手动编写代码

这是我的密码:

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