0

こんにちは、Java の完全な初心者です。これは私の 2 番目の課題です。配列リストを使用して宝くじコードのメソッドを作成しましたが、2 つの問題があります。

  • 要求されたすべての行に対して、同じシャッフル リストが作成されます。
  • 行は横ではなく下に印刷されます。

public static void irishLottery() {
    Scanner input = new Scanner(System.in);
    double cost = 0;
    System.out.println("How many lines of lottery up to 10 would you like?");
    int linesam = input.nextInt();

    ArrayList<Integer> numbers = new ArrayList<Integer>();
    //define ArrayList to hold Integer objects

    for (int lottonos = 0; lottonos < 45; lottonos++) {
        numbers.add(lottonos + 1);
    }
    Collections.shuffle(numbers);

    System.out.print("Your lottery numbers are: ");

    for (int lncounter = 1; lncounter <= linesam; lncounter++) {
        for (int j = 0; j < 6; j++) {
            System.out.println(numbers.get(j) + " ");

        }
    }
}
4

1 に答える 1

2

最初の問題: 新しい行を表示するたびにリストを再シャッフルします。

for (int lncounter = 1; lncounter <= linesam; lncounter++) {  
    Collections.shuffle(numbers);
    for (int j = 0; j < 6; j++) {
        System.out.println( numbers.get(j) + " ");
    }
}

2 番目の問題については、println() ではなく print() を使用してください。println() は新しい行を出力するためです。

for (int lncounter = 1; lncounter <= linesam; lncounter++) {  
    Collections.shuffle(numbers);
    for (int j = 0; j < 6; j++) {
        System.out.print(numbers.get(j) + " ");
    }
    System.out.println(); // new line before next line
}

Java でのループの標準イディオムは、0 から開始することに注意してください。

for (int lncounter = 0; lncounter < linesam; lncounter++) {  
    Collections.shuffle(numbers);
    for (int j = 0; j < 6; j++) {
        System.out.print(numbers.get(j) + " ");
    }
    System.out.println(); // new line before next line
}
于 2013-05-20T12:12:21.657 に答える