如何在Java中限制输出长度

如何在Java中限制输出长度,java,debugging,output,Java,Debugging,Output,我编写了一个非常基本的程序,从用户那里获取输入,然后输出到多行,每行最多16个字符。我首先检查没有一个单词超过16个字符,然后尝试限制每行的输出长度。但是,当我尝试使用以下输入时,我的代码似乎不起作用:- 输入:“有十几只毛茸茸的兔子睡在沙发下面。” 预期的: 有一个 打毛绒 兔子睡觉 在沙发下面 结果: 有一个 打毛绒 兔子睡觉 你知道为什么我的代码没有按预期执行吗 public static void main(String[] args) { Scanner keyboard =

我编写了一个非常基本的程序,从用户那里获取输入,然后输出到多行,每行最多16个字符。我首先检查没有一个单词超过16个字符,然后尝试限制每行的输出长度。但是,当我尝试使用以下输入时,我的代码似乎不起作用:-

输入:“有十几只毛茸茸的兔子睡在沙发下面。”

预期的

有一个

打毛绒

兔子睡觉

在沙发下面

结果

有一个

打毛绒

兔子睡觉

你知道为什么我的代码没有按预期执行吗

public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);

    System.out.print("Type a sentence: ");
    String originalText = keyboard.nextLine();

    String[] seperatedWords = originalText.split(" ");

    int check = 0;

    for (int x = 0; x >= seperatedWords.length; x++){
        if (seperatedWords[x].length() > 16){
            System.out.println("The input includes argumentativeness, which is longer than 16 characters.");
            check = 1;
            break;
        }
    }

    String outputString = "";

    if (check == 0){
        for (int j = 0; j < seperatedWords.length; j++){
            if ((outputString + seperatedWords[j]).length() <= 16){
                outputString += seperatedWords[j] + " ";
            } else if ((outputString + seperatedWords[j]).length() >= 16){
                System.out.println(outputString);
                outputString = seperatedWords[j] + " ";
            } 
        }
    }

}
publicstaticvoidmain(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
系统输出打印(“键入句子:”);
String originalText=keyboard.nextLine();
字符串[]separatedwords=originalText.split(“”);
整数检查=0;
对于(int x=0;x>=separateddwords.length;x++){
if(单独的DWORDS[x].length()>16){
System.out.println(“输入包括论证性,长度超过16个字符”);
检查=1;
打破
}
}
字符串outputString=“”;
如果(检查==0){
对于(int j=0;j
在更新输出字符串之前,先打印输出字符串。另外,您可能需要检查您的条件:=16两个覆盖==16

        } else if ((outputString + seperatedWords[j]).length() >= 16){
            System.out.println(outputString);
            outputString = seperatedWords[j] + " ";
        } 
使用 输出+=“\n”
添加新行并在代码末尾打印所有内容。

从外观上看,循环的最后一次迭代似乎在退出时没有打印“outputString”。原因是“outputString”的长度小于16,并且循环在其值为“在沙发下”时终止。当循环终止时,您可以添加另一个if条件来处理该问题:

public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);

    System.out.print("Type a sentence: ");
    String originalText = keyboard.nextLine();

    String[] seperatedWords = originalText.split(" ");

    int check = 0;

    for (int x = 0; x >= seperatedWords.length; x++){
        if (seperatedWords[x].length() > 16){
            System.out.println("The input includes argumentativeness, which is longer than 16 characters.");
            check = 1;
            break;
        }
    }

    String outputString = "";

    if (check == 0){
        for (int j = 0; j < seperatedWords.length; j++){
            if ((outputString + seperatedWords[j]).length() <= 16){
                outputString += seperatedWords[j] + " ";
            } else if ((outputString + seperatedWords[j]).length() >= 16){
                System.out.println(outputString);
                outputString = seperatedWords[j] + " ";
            }
        }
        if ( outputString.length() > 0 ){
            System.out.println(outputString);
        }
    }

}
publicstaticvoidmain(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
系统输出打印(“键入句子:”);
String originalText=keyboard.nextLine();
字符串[]separatedwords=originalText.split(“”);
整数检查=0;
对于(int x=0;x>=separateddwords.length;x++){
if(单独的DWORDS[x].length()>16){
System.out.println(“输入包括论证性,长度超过16个字符”);
检查=1;
打破
}
}
字符串outputString=“”;
如果(检查==0){
对于(int j=0;j0){
System.out.println(outputString);
}
}
}

首先,永远不会执行此检查:

for (int x = 0; x >= seperatedWords.length; x++){
正确的是
x

第二

else if ((outputString + seperatedWords[j]).length() >= 16)
这应该是

else if ((outputString + seperatedWords[j]).length() > 16)
而您错过了for循环之后的最后一次打印:

if ( outputString.length() > 0 ){
        System.out.println(outputString);
}

第三,您忘了计算总长度中的空格“”。

您是否使用调试器来逐步检查代码,但仍然有问题?这是一种滥用,因此请尝试在您喜爱的IDE中使用调试器来调试此类问题