我试图以完全相同的方式提取一个两个措辞的字符串,但我得到的只是第一个单词作为输出。
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]);
}
}
答案 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
以将其放入数组。