如何将字符串输入循环到字符串数组然后输出?

时间:2017-05-26 16:51:41

标签: java

我正在尝试编写一个程序来读取用户的单词,直到他们输入单词“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;
        }
     }
}

4 个答案:

答案 0 :(得分:4)

  1. 我建议使用集合ArrayList而不是常规数组。因此,您不必担心尺寸。
  2. 进行无限循环
  3. 常量总是应该在比较的左侧。在这种特殊情况下,line不可为空,但这是一种很好的做法。
  4. 最终代码将如下所示:

    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);
}

我希望有所帮助!