我尝试以完全相同的方式提取两个措辞的字符串,但我得到的只是第一个字作为输出

时间:2017-07-17 11:43:22

标签: java

我试图以完全相同的方式提取一个两个措辞的字符串,但我得到的只是第一个单词作为输出。

public class name {
    public static void main(String[] args)throws IOException {
        InputStreamReader read = new InputStreamReader(System.in);
        BufferedReader in = new BufferedReader(read);
        String []arr = new String[10];
        String name, str = " ";
        int k = 0;
        System.out.println("Enter Name");
        name = in.readLine();
        for(int i = 0; i < name.length(); i++) {
            if(name.charAt(i) != ' ') {
                str = str + name.charAt(i);
            }
            else {
                arr[k++] = str;
                str = " ";
            }
        }
        for(int i = 0; i < k; i++)
        System.out.println(arr[i]);

    }
}

2 个答案:

答案 0 :(得分:1)

我认为问题已经回答了。但是,不要遍历字符串的字符,最好使用标准Java库,如下所示:

name = in.readLine();
if (name != null && !"".equals(name)) {
    String[] arr = name.split("\\s+");
    for (int i = 0; i < arr.length; i++)
        System.out.println(arr[i]);
}

split()方法会执行您自己编程的操作。 字符串\\s+是一个正则表达式,表示一个或多个空格字符(空格,换行符,...)。您也可以使用" ",但在这种情况下,您的输入必须只包含一个空格字符。

示例:

  

System.out.println(“输入名称”);

输入:

firstname secondname         lastname
  

输出:

firstname
secondname
lastname

答案 1 :(得分:0)

当你第一次循环结束时,你在testrun.sh变量中有最后一个单词。

您需要在循环后添加str以将其放入数组。