猿问

在操作中使用静态变量

我正在尝试制作这个简单的赔率和偶数游戏。该程序可以完美运行,直到“1”。问题是:它不是将“手指”和“计算机”相乘,而是直接给出“计算机”的值,虽然我没有从其余代码中得到任何错误,但我也没有得到任何输出。我将“name”、“oe”和“finger”设为静态以便能够在循环外使用它们。


import java.util.Scanner;

import java.util.Random;


public class OddsAndEvens {

static String name; 

static String oe;

static int finger;


public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    System.out.println("Let’s play a game called “Odds and Evens”");

    System.out.println("What is your name?");

    String name = input.next();

    while (true) {


        System.out.println("Hello " + name + " which one do you choose? (O)dds or (E)vens?");

        String oe = input.next();


        if (oe.equalsIgnoreCase("e")) {

            System.out.println(name + " has picked evens! The computer will be odds.");

            break;

        }

        if (oe.equalsIgnoreCase("o")) {

            System.out.println(name + " has picked odds! The computer will be evens.");

            break;

        } else {

            System.out.println("You have typed an invalid answer, lets try again");

        }

    }


    while (true) {

        System.out.print("How many \"fingers\" do you put out? ");

        int finger = input.nextInt();

        if (finger >= 0 && finger <= 5) {

            break;

        } else {

            System.out.println("Please write a number between 0 and 5");

        }

    }


    Random rand = new Random();

    int computer = rand.nextInt(5) + 0;

    System.out.println("Computer plays number " + computer);

    System.out.println("----------------------------------------------");


    int sum = finger + computer; //1<------------------------------

    if (sum % 2 == 0) {

        System.out.println(sum + " is even!");

        if (oe.equalsIgnoreCase("e") && (sum % 2 == 0)) {

            System.out.println(name + " wins!");

        } else {

            System.out.println("Computer wins!");

        }


            }



        }

    }


}

}


温温酱
浏览 153回答 3
3回答

扬帆大鱼

在第二个 while 循环中,您初始化一个finger仅在 while 循环内有效的新局部变量,方法是说int finger =而不是说来调用全局静态变量finger&nbsp;finger =。结果,全局变量finger没有被初始化,sum也没有什么可以添加到变量中computer。
随时随地看视频慕课网APP

相关分类

Java
我要回答