如何接受用户字符串输入然后转换为char并打印出来?

时间:2015-10-05 10:21:12

标签: java string chars

我正试图找到一种让用户输入字符串的方法,例如“你好我的名字是先生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]));

这将获取用户的输入并将其打印出来。但是,我希望它们以逗号分隔,而不是输入。 感谢

5 个答案:

答案 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.打印阵列。