我试过调试这段代码,但是找不到有什么问题。
我正在尝试使用此代码消除空格并将单词“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);
}
}
编辑发布了整个代码
答案 0 :(得分:0)
我看到两个问题。
第一种是比较字符串的方式。了解如果您的&#34; i&#34; string不是大写的,它表示if是错误的。这将对您有所帮助:Java String.equals versus ==
第二件事是分裂是如何运作的。如果单词之间有三个空格,则第一个空格和最后一个空格将位于分割的数组中。 "aaa aaa".split()
的结果将是这样的数组:
[0]="aaa"
[1]=" "
[2]=" "
[3]="aaa"
当你" ".trim()
时,你得到并清空字符串""
。最后,当你循环重建整个事物时,你将空字符串附加到你的字符串。
答案 1 :(得分:0)
使用equals而不是==来比较字符串 所以行
if(arr[i] == "i")
变为
if("i".equals(arr[i]))
有关详细信息,请查看此处: http://www.thejavageek.com/2013/07/27/string-comparison-with-equals-and-assignment-operator/
答案 2 :(得分:0)
如果我们只是想简单的话,我只需要说明它是如何变得简单。
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);