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