我正在尝试编写一个程序来读取用户的单词,直到他们输入单词“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;
}
}
}
答案 0 :(得分:4)
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。这不会打印&#34;退出&#34;最后,如果要打印它,请在buffer.add(line);
语句之前移动if
。
答案 1 :(得分:1)
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并使用逗号打印所有单词。
答案 2 :(得分:0)
您忘记显示数组的索引,还需要更改撤消:
if (array[i].equals("quit")) {
System.out.println(Arrays.toString(array))
break;
}
答案 3 :(得分:0)
我建议您使用名为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);
}
我希望有所帮助!