For循环:根据用户输入填充数组

时间:2018-07-05 16:27:42

标签: java arrays for-loop

我正在设置一个小型应用程序,要求用户确定数组大小然后填充它。使用的“ for”循环跳过索引0;但我不确定为什么。

如果您以1作为数组大小来运行此代码,它将跳过用户输入第一个单词的情况。

问题肯定在for循环上,但是它是如此简单以至于我看不到它。 谢谢!

import java.util.Scanner;

public class WordRandomizerAdvanced {

public static void main(String[] args) {


    int arrayDimesion;

    Scanner sc = new Scanner(System.in);

    System.out.println("****************************************************");
    System.out.println("******** Welcome to Word Randomizer ADVANCED********");
    System.out.println("****************************************************");

    //Get array size
    System.out.println("How many words would you like to enter?");
    arrayDimesion = sc.nextInt();
    String[] wordArray = new String[arrayDimesion];


    //Populate with user input
    for (int i=0; i<arrayDimesion; i++) {

    System.out.println("Please enter a word"); 
    wordArray[i] = sc.nextLine();
    }


    //Print all entered Strings     
    System.out.println("This are the words you entered: ");
    for(int i = 0; i < wordArray.length; i++) {
        System.out.println(wordArray[i]);
    }

    //Print random string from array
    int r = (int)(Math.random() * wordArray.length);
    System.out.println("The random word is: " + wordArray[r]);




}

}

2 个答案:

答案 0 :(得分:1)

更改您的

arrayDimesion = sc.nextInt();

arrayDimesion = Integer.parseInt(sc.nextLine());

原因sc.nextInt()不会消耗您输入arrayDimesion后输入的换行符。稍后,此内容将在下一个sc.nextLine()调用中使用。

PS::它可能会抛出NumberFormatException。因此,您可以像这样处理它:

try {
    arrayDimesion = Integer.parseInt(sc.nextLine());
} catch (NumberFormatException e) {
    e.printStackTrace();
}

答案 1 :(得分:0)

下面的代码干净,易于阅读并且可以处理边缘情况。

import java.util.Scanner;

public class WordRandomizerAdvanced {

    public static void main(String[] args) {
        int numOfWords;
        Scanner scanner = new Scanner(System.in);

        System.out.println("****************************************************");
        System.out.println("******** Welcome to Word Randomizer ADVANCED********");
        System.out.println("****************************************************");

        //Get array size
        System.out.println("How many words would you like to enter?");
        numOfWords = Integer.parseInt(scanner.nextLine());
        String[] wordArray = new String[numOfWords];

        //Populate with user input
        System.out.println("Please enter the word(s)");
        for (int i = 0; i < numOfWords; i++) {
            wordArray[i] = scanner.nextLine();
        }

        //Print all entered Strings
        System.out.println("These are the words you entered: ");
        for (int i = 0; i < numOfWords; i++) {
            System.out.println(wordArray[i]);
        }

        //Print random string from array
        if (numOfWords == 0) {
            System.out.println("You didn't enter a word");
        } else {
            int r = (int) (Math.random() * numOfWords);
            System.out.println("The random word is: " + wordArray[r]);
        }
    }
}
相关问题