如何将字符串输入循环到字符串数组然后输出?
我想写一个程序,读取用户的单词,直到他们输入单词“quit”,在这一点上,它打印出他们在一行中输入的所有单词,用逗号分隔。如何将字符串输入循环到字符串数组然后输出?
我以前得到的最后一个用户输入(退出)只输出,但现在我迷路了。帮帮我。有一些注释掉的代码。谢谢。我是Java新手,但知道C/C++和UE4。
public static void main(String[] args) {
java.util.Scanner scanner = new java.util.Scanner(System.in);
String[] array = new String[1000];
for (int i=1; i>0; i++) {
System.out.print("Enter string: ");
array[i] = scanner.nextLine();
if (array.equals("quit")) {
System.out.println(array);
break;
}
}
}
你忘了展现排列的指标,你也需要改变退出:
if (array[i].equals("quit")) {
System.out.println(Arrays.toString(array))
break;
}
您可能想使用'System.out.println(Arrays.toString(array))'代替。 – bradimus
是的,你是对的!谢谢 –
- 我会建议使用收集
ArrayList
而不是规则排列的。所以你不必担心尺寸。 - 创建一个无限循环
- 常量应始终位于比较的左侧。在这种特殊情况下,
line
不是可空的,但这是一个很好的习惯。
最终的代码看起来就像这样:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<String> buffer = new ArrayList<>();
while (true) {
System.out.print("Enter string: ");
String line = scanner.nextLine();
if ("quit".equals(line)) {
break;
}
buffer.add(line);
}
System.out.println(buffer);
}
希望它能帮助!
P.S.如果您想要在if
声明前移动buffer.add(line);
,则不会在最后打印“退出”。
做while循环可能会稍微好一点。他还要求以逗号分隔的字符串,否则很好的答案 –
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner keyboard= new Scanner(System.in);
String word=null;
ArrayList<String> words= new ArrayList<String>();
do{
System.out.print("Type your word: ");
word=keyboard.next();
if(word.equalsIgnoreCase("Quit")) break;
words.add(word);
}while(true);
System.out.println("You typed: ");
for(String w: words){
System.out.print(w+",");
}
}
}
你不知道循环的数量,所以你需要“while”而不是“for”。 如果用户键入退出它停止。如果不是,则将此字添加到ArrayList中。 最后,遍历此ArrayList并用逗号打印所有单词。
这会在列表的末尾添加一个逗号。您可能想尝试java8的StringJoiner类 –
我建议您使用名为TextIO
的类,它可以找到here。这个类有使你的问题更容易的方法。首先介绍一下:
TextIO是一个在TextIO读取一些文本后立即向前移动的控件指针的类。例如。如果用户输入字符串:
Hello World
然后默认的指针位置将是文本的开始位置。如果您运行的语句:
String str = TextIO.getWord();
str
将包含字符串Hello
现在的指针位置将是正确的在Hello
面前。现在再次调用其他方法时,TextIO将返回从当前指针位置开始的输出。
来到你的问题了,TEXTIO包含方法peek()
,可返回仅领先指针位置不改变指针位置的字符。如果要预先确定文本中的下一个字符(所需字符在您的案例中为逗号),这非常有用。 这是你会怎么做编码:
ArrayList<String> array = new ArrayList<String>();
while(true){
TextIO.skipWhiteSpace();//Skips any white space(blacks, carriage returns etc.) that may be preceding your next word.
String str = TextIO.getWord();
if (str.equalsIgnoreCase("quit")){
break;}
if(TextIO.peek() != ','){
...Show error message...
break;
}
TextIO.getChar();//Skip the comma that is the next character
array.add(str);
}
我希望帮助!
如果你想循环运行直到用户输入'quit',你需要'array [i] .equals(“quit”)'和循环有问题 –
,最好使用while循环而不是制作一个无限循环。 –
您可能想使用'System.out.println(Arrays.toString(array))'代替。 – bradimus