Java 2个一位数彩票游戏,can';我找不到哪里出了错

Java 2个一位数彩票游戏,can';我找不到哪里出了错,java,Java,我试图设计一个彩票游戏,你选择两个一位数的数字,并将它们与随机数进行比较。我正在使用我的教授给我的一个代码示例,并试图对其进行调整以使用它。我一直在想如何让它运行,或者我出了什么问题 import java.util.Scanner; public class Lottery { private static Scanner input; public static void main(String[] args) { String lottery = ""

我试图设计一个彩票游戏,你选择两个一位数的数字,并将它们与随机数进行比较。我正在使用我的教授给我的一个代码示例,并试图对其进行调整以使用它。我一直在想如何让它运行,或者我出了什么问题

import java.util.Scanner;

public class Lottery {

    private static Scanner input;

    public static void main(String[] args) {
        String lottery = "" + (int) (Math.random() * 10);
        String lottery1 = "" + (int) (Math.random() * 10);

        input = new Scanner(System.in);
        System.out.print("Enter your first single digit guess: ");
        String guess = input.nextLine();
        System.out.print("Enter your second single digit guess: ");
        String guess1 = input.nextLine();

        int lotteryDigit1 = lottery.charAt(0);
        int lottery1Digit1 = lottery.charAt(1);

        int guessDigit1 = guess.charAt(0);
        int guess1Digit1 = guess1.charAt(1);

        System.out.println("The lottery number is " + lottery);

        if (guess.equals(lottery))
            System.out.println("Exact match: you win $10,000");
        else if (guess1Digit1 == lotteryDigit1
                && guessDigit1 == lottery1Digit1)
            System.out.println("Match all digits: you win $3,000");
        else if (guessDigit1 == lotteryDigit1
                || guessDigit1 == lottery1Digit1
                || guess1Digit1 == lotteryDigit1
                || guess1Digit1 == lottery1Digit1)
            System.out.println("Match one digit: you win $1,000");
        else
            System.out.println("Sorry, no matches");
    }
}

我只能称这种处理程序函数的方法为“有趣”。尽管如此,您仍需要添加以下更改:

import java.util.Scanner;

public class Lottery {

   private static Scanner input;

   public static void main(String[] args) {
      String lottery = "" + ((int) (Math.random() * 10)) + ((int) (Math.random() * 10));

      input = new Scanner(System.in);
      System.out.print("Enter your two digit guess: ");
      String guess = input.nextLine();

      int lotteryDigit1 = lottery.charAt(0);
      int lottery1Digit1 = lottery.charAt(1);

      int guessDigit1 = guess.charAt(0);
      int guess1Digit1 = guess.charAt(1);

      System.out.println("The lottery number is " + lottery);

      if (guess.equals(lottery))
         System.out.println("Exact match: you win $10,000");
      else if (guess1Digit1 == lotteryDigit1
             && guessDigit1 == lottery1Digit1)
         System.out.println("Match all digits: you win $3,000");
      else if (guessDigit1 == lotteryDigit1
           || guessDigit1 == lottery1Digit1
           || guess1Digit1 == lotteryDigit1
           || guess1Digit1 == lottery1Digit1)
         System.out.println("Match one digit: you win $1,000");
      else
         System.out.println("Sorry, no matches");
   }
}

原始程序的问题是,它忘了将彩票和彩票1压缩成彩票,我添加了彩票,并且它选择了将数字分开,这是非常低效的。现在,这两个数字都是两位数,系统的其余部分保持不变。代码现在已经简化了。

考虑一下这段相当简化的代码

    // uses java.util.Random
    Random rand = new Random ();
    Scanner scan = new Scanner (System.in);

    int guess1 = rand.nextInt(10);
    int guess2 = rand.nextInt(10);

    System.out.println("Enter number 1");
    int myGuess1 = scan.nextInt();
    System.out.println("Enter number 2");
    int myGuess2 = scan.nextInt();

    System.out.printf("Random1 %d Random2 %d Guess1 %d Guess2 %d", 
                                      guess1, guess2, myGuess1, myGuess2);

我将把比较留给您

所有这些转换是怎么回事?您正在使用
String
char
int
-只需使用
int
我刚刚脱离了前面给出的示例,并尝试调整它,使其符合我的要求。提示:扫描仪有一个
nextInt
方法。除去
int
之外的所有内容我不太明白你的建议,抱歉,但我对JAVASee还是相当陌生。我的答案是Adam,我认为它在某种程度上简化了你的代码