Java 从字符数组创建新字符串
我看到了一些奇怪的现象,如果我不使用原始输入字符串从字符数组转换回字符串,新字符串中就不会发生更改Java 从字符数组创建新字符串,java,string,char,Java,String,Char,我看到了一些奇怪的现象,如果我不使用原始输入字符串从字符数组转换回字符串,新字符串中就不会发生更改 public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.print("Type in String:"); String theString = scan.nextLine(); theString = theString.replaceAll("\\s+",
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.print("Type in String:");
String theString = scan.nextLine();
theString = theString.replaceAll("\\s+", " ");
char [] convert = theString.toCharArray();
convert[0] = Character.toUpperCase(convert[0]);
for(int i = 0; i < convert.length; i++){
if(Character.isWhitespace(convert[i])){
convert[i+1] = Character.toUpperCase(convert[i+1]);
}
}
theString = String.valueOf(convert);
System.out.println(theString);
或
我的输出不会改变输入!总之,这个程序将字符串中每个单词的第一个字符大写。有人能解释为什么会发生这样的事情吗? < p>它工作得很好,但是你要考虑的是在扫描字符串后使用
theString.trim();
这将从末尾删除whitspaces,因为现在如果我输入“hello hello”(注意末尾的空格),它将抛出边界外异常,因为循环中的I+1
或者只需检查循环内部是否存在索引
i+1
。它可以工作。我测试过了。我想你忘了换衣服了
System.out.println(theString);
到
完整代码:
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.print("Type in String:");
String theString = scan.nextLine();
theString = theString.replaceAll("\\s+", " ");
char [] convert = theString.trim().toCharArray();
convert[0] = Character.toUpperCase(convert[0]);
for(int i = 0; i < convert.length; i++){
if(Character.isWhitespace(convert[i])){
convert[i+1] = Character.toUpperCase(convert[i+1]);
}
}
String newString = String.valueOf(convert);
System.out.println(newString);
}
你能再解释一遍吗?基本上,输入hello world=>hello world作为输出。但是,如果我更改要转换为字符串的字符数组的名称或变量,如果
newString
包含转换后的字符串,它将无法正常工作,但是您打印字符串,显然字符串已打印。而字符串
是初始字符串,不是转换后的字符串。您的程序对我来说运行良好。你确定粘贴正确吗?你有一个不知道的错误。如果您的输入以空白字符结尾,则当转换超出字符串结尾时,您将得到一个超出边界的数组。您是对的。。。愚蠢的我。。。很抱歉然后接受答案,将问题标记为已回答:)
System.out.println(theString);
System.out.println(newString);
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.print("Type in String:");
String theString = scan.nextLine();
theString = theString.replaceAll("\\s+", " ");
char [] convert = theString.trim().toCharArray();
convert[0] = Character.toUpperCase(convert[0]);
for(int i = 0; i < convert.length; i++){
if(Character.isWhitespace(convert[i])){
convert[i+1] = Character.toUpperCase(convert[i+1]);
}
}
String newString = String.valueOf(convert);
System.out.println(newString);
}
char [] convert = theString.trim().toCharArray();