我正试图找到一种让用户输入字符串的方法,例如“你好我的名字是先生blobby”,然后将其分解为单个字符并将其打印出来,以便将它们打印出来,如下所示:
{'H', 'e', 'l', 'l', 'o', 'm', 'y'}
String userInputString;
HashMap hm = new HashMap();
Scanner userInput = new Scanner( System.in );
System.out.println("Type a string: ");
userInputString = userInput.next();
char ui = userInputString.charAt(0);
char[] ui_arr = userInputString.toCharArray();
for(int i=0;i<ui_arr.length;i++){
System.out.print(String.valueOf(ui_arr[i]));
这将获取用户的输入并将其打印出来。但是,我希望它们以逗号分隔,而不是输入。 感谢
答案 0 :(得分:2)
您可以使用Streams API连接字符串中的字符,并在它们之间加#!/bin/bash
while read line2; do
while read line1; do
printf "$line1:$line2\n";
done < file1.txt;
done < file2.txt;
。
$ ./merge.sh
file1-1:file2-1
file1-2:file2-1
file1-3:file2-1
file1-4:file2-1
file1-1:file2-2
file1-2:file2-2
file1-3:file2-2
file1-4:file2-2
file1-1:file2-3
file1-2:file2-3
file1-3:file2-3
file1-4:file2-3
file1-1:file2-4
file1-2:file2-4
file1-3:file2-4
file1-4:file2-4
答案 1 :(得分:2)
所以我在你的代码中看到了一些错误。
HashMap hm = new HashMap();
这条线没用。你不要在任何地方使用hm。
Scanner userInput = new Scanner( System.in );
System.out.println("Type a string: ");
好
userInputString = userInput.next();
next()
方法只能读取下一个空格。您希望使用nextLine()
,它读取整行。
char ui = userInputString.charAt(0);
我不知道你在哪里用它......?
char[] ui_arr = userInputString.toCharArray();
好
for(int i=0;i<ui_arr.length;i++){
System.out.println(String.valueOf(ui_arr[i]));
}
错误的方法,println()
打印字符,然后打印换行符,即之后按 Enter 。您想要使用print()
。除此之外,您不需要将char转换为String,您可以立即打印char(即System.out.print(ui_arr[i]);
)。
如果您想用逗号分隔字符,则需要使用print(ui_arr[i] + ", ")
。这将打印字符,然后,
。为了使它更好,你需要检查你的代码是否是最后一个字符,然后省略打印,
。
总的来说,我建议这样做:
Scanner userInput = new Scanner(System.in);
System.out.println("Type a string: ");
String userInputString = userInput.nextLine();
char[] ui_arr = userInputString.toCharArray();
for(int i=0; i<ui_arr.length; i++){
System.out.print(ui_arr[i]);
if(i < ui_arr.length - 1){
System.out.print(", ");
}
}
答案 2 :(得分:1)
Ty this:
Scanner userInput = new Scanner( System.in );
System.out.println("Type a string: ");
char[] userInputString = userInput.nextLine().toCharArray();
for(int i = 0; i < userInputString.length; i++){
if(!String.valueOf(userInputString[i]).equals(" "))
System.out.print(userInputString[i]+",");
}
您还可以使用if condition添加不想打印空间的条件。
答案 3 :(得分:0)
使用userInput.nextLine()而不是userInput.next(),然后您可以根据需要格式化字符串然后打印它。 请注意javadoc以了解函数的确切行为。
这是一个例子:
Scanner userInput = new Scanner(System.in);
System.out.println("Type a string: ");
String userInputString = userInput.nextLine();
char[] ui_arr = userInputString.toCharArray();
StringBuffer sb = new StringBuffer("{");
for (char c: ui_arr) {
sb.append(c);
sb.append(",");
}
// delete the last comma
sb.deleteCharAt(sb.length() -1);
sb.append("}");
System.out.println(sb.toString());
你可以在for循环中做任何你想做的事情,例如忽略空格char或其他东西
希望有所帮助
答案 4 :(得分:0)
只需拥有字符串即可轻松完成给定任务,无需将其转换为char数组,然后单独打印。
从头到尾迭代字符串(长度), 如果角色是一个空间,只需忽略, 否则打印出来。 System.out.println()打印内容后跟换行符, System.out.print()仅打印内容。 修改后的代码:
Scanner userInput = new Scanner( System.in );
System.out.println("Type a string: ");
String userInputString = userInput.nextLine();
for(int i=0;i<userInputString.length();i++){
if(userInputString.charAt(i)!=' ')
System.out.print(userInputString.charAt(i)+" ");
}
在这里输入代码
如果你真的想将字符串转换为char数组,输出应完全匹配 喜欢{&#39; H&#39;,&#39;&#39; l&#39;,&#39; l&#39;,&#39; o&#39;,&#39 ; m&#39;,&#39; y&#39;}。 1.删除字符串中的所有空格。 2.将其转换为数组。 3.打印阵列。