Java 在此代码序列中找不到错误

Java 在此代码序列中找不到错误,java,string,Java,String,我试过调试这段代码,但就是找不到错误所在 我试图用这段代码消除空格,并将单词“I”的任何实例大写。 然后我试着把句子重新组合起来,单词之间只有一个空格。现在,如果原始字符串中有4个空格,那么修改后的字符串中仍将有4个空格 谢谢 public class Sentencefix { public static void main(String[] args) { System.out.println("Enter your input sentece");

我试过调试这段代码,但就是找不到错误所在

我试图用这段代码消除空格,并将单词“I”的任何实例大写。 然后我试着把句子重新组合起来,单词之间只有一个空格。现在,如果原始字符串中有4个空格,那么修改后的字符串中仍将有4个空格

谢谢

public class Sentencefix {

    public static void main(String[] args) {

        System.out.println("Enter your input sentece");
        String input = IO.readString();

        String[] arr = input.split(" ");
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i].trim();
            arr[i] = arr[i].toLowerCase();
            if (arr[i] == "i") {
                arr[i] = arr[i].toUpperCase();
            }

        }
        input = "";
        for (int j = 0; j < arr.length; j++) {
            input = input + ' ' + arr[j];
        }
        input = input.trim();
        char ch = input.charAt(0);
        ch = Character.toUpperCase(ch);
        input = ch + input.substring(1, input.length());
        if (input.charAt(input.length() - 1) != '.' && input.charAt(input.length() - 1) != '!' && input.charAt(input.length() - 1) != '?') {
            input = input + '.';
        }

        System.out.println(input);
    }
}
公共类语句修复{
公共静态void main(字符串[]args){
System.out.println(“输入您的输入语句”);
字符串输入=IO.readString();
字符串[]arr=input.split(“”);
对于(int i=0;i
编辑发布了整个代码

我发现两个问题

第一个是比较字符串的方式。请理解,如果您的“i”字符串不是大写,则表示if是错误的。这将帮助您:

第二件事,是拆分的工作原理。当一个单词之间有三个空格时,第一个空格和最后一个空格将在拆分数组中。
“aaa.aaa.split()
的结果将如下所示:

[0]="aaa"
[1]=" "
[2]=" "
[3]="aaa"

当您
“”.trim()
时,您会得到一个空字符串
“”
。最后,当您循环重建整个内容时,您会将空字符串附加到字符串中。

使用equals而不是== so线

变成

if("i".equals(arr[i]))
有关更多详细信息,请查看以下内容:

我只需要展示一下,如果我们只是简单地思考,它是如何变得简单的

String output = "";
for (int i=0;i<input.length();i++)
    if (input.charAt(i)=='i')
        input += "I";
    else if (i==input.length()-1 || (input.charAt(i)==' ' && input.charAt(i+1)!=' '))
        output += input.charAt(i);
input = output;
System.out.println(input);
字符串输出=”;

对于(int i=0;i您的输入是什么,预期的输出是什么,当前不希望的输出是什么?例如:我有'asd asd asd i',我想要'asd asd asd i',但我得到'asd asd asd asd i'。最好为您使用的语言包含一个标记,以便让熟悉该语言的人知道。对不起,这是java,输入只是一个标签字符串。如果输入字符串中有多个空格,则当前的undersired输出是小写的i,单词之间有多个空格。用纯文本编写输入输出。这对试图帮助您的每个人来说都会更加明显。输入:“我们会在那里我想”当前输出:“我们会在那里我想”期望“我想我们会在那里”(此处没有显示空格,假设输入和当前输出中“将”后面有3个空格
String output = "";
for (int i=0;i<input.length();i++)
    if (input.charAt(i)=='i')
        input += "I";
    else if (i==input.length()-1 || (input.charAt(i)==' ' && input.charAt(i+1)!=' '))
        output += input.charAt(i);
input = output;
System.out.println(input);