程序在到达while循环之前结束

橙色菠萝

嗨,大家好,我正在尝试制作彩票程序,并试图在询问用户是否要重试后让他们输入。但是我的程序在到达while循环之前就结束了。

public class Main {

public static void main(String[] args)
{

    Scanner input = new Scanner(System.in);
    String yn = "";

    Lottery.getTicket();
    Lottery.generateWinningNumbers();
    System.out.print("\nWould you like to try again? ");

    while(input.hasNextLine())
    {
        yn = input.nextLine();

        if(yn.equalsIgnoreCase("y"))
        {
            Lottery.getTicket();
            Lottery.generateWinningNumbers();
        }
        else
        {
            System.out.println("Done");
        }

    }
    input.close();
}

}

在我的彩票课程中:

 import java.util.Random;
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.Scanner;

 public class Lottery {



public static Set<Integer> generateWinningNumbers()
{
    Random rndNumbers = new Random();   
    TreeSet<Integer> winningNumbers = new TreeSet<Integer>();

    int max = 40;
    int min = 1;
    int range;
    int sixNum;

    for(int i = 0; i < 6; i++)
    {
        range = max - min + 1;
        sixNum = rndNumbers.nextInt(range) + min;

        while(winningNumbers.contains(sixNum))
        {
            sixNum = rndNumbers.nextInt(range) + min;
        }

        winningNumbers.add(sixNum);
    }
    System.out.print("Winning Numbers: " + winningNumbers);
    return winningNumbers;
}


public static Set<Integer> getTicket()
{
    int userInput;
    TreeSet<Integer> getNumbers = new TreeSet<Integer>();
    Scanner input = new Scanner(System.in);
    System.out.println("Enter your 6 numbers between 1-40: ");

    for (int i = 0; i<6 ; i++)
    {
        System.out.print(i+1 + ": ");
        userInput = input.nextInt();
        while( userInput <1 || userInput > 40 || getNumbers.contains(userInput))
        {   
            if (getNumbers.contains(userInput))
            {
                System.out.println("Number already picked");
                userInput = input.nextInt();
            }
            if(userInput < 1 || userInput > 40)
            {
                System.out.println("Invalid. Pick a number between 1-40");
                userInput = input.nextInt();
            }
        }
        getNumbers.add(userInput);

    }
    input.close();
    System.out.println("Your ticket was: " + getNumbers);
    return getNumbers;
}

} //彩票类结束

可怕的袋熊

您正在使用扫描仪对象

Scanner input = new Scanner(System.in);

在Lottery.getTicket中,您可以

input.close();

这意味着System.in将在程序的其余部分关闭

尝试将Scanner对象从main其他对象传递给需要它的类和方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章