Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 变量hitOrStick可能尚未初始化_Java_Variables - Fatal编程技术网

Java 变量hitOrStick可能尚未初始化

Java 变量hitOrStick可能尚未初始化,java,variables,Java,Variables,我有一个问题,这是一个学校的任务代码,当编译它说 hitOrStick might not have been initialized 我不知道是什么原因造成的,因为我很确定它已经初始化,如果您能发现任何其他错误,我们将不胜感激 (我知道它不是真正的黑杰克,它是非常基本的!)再次感谢 import java.util.Scanner; import java.util.Random; import java.lang.*; class blackjack { public sta

我有一个问题,这是一个学校的任务代码,当编译它说

hitOrStick might not have been initialized
我不知道是什么原因造成的,因为我很确定它已经初始化,如果您能发现任何其他错误,我们将不胜感激

(我知道它不是真正的黑杰克,它是非常基本的!)再次感谢

import java.util.Scanner;
import java.util.Random;
import java.lang.*; 

class blackjack

{
    public static void main(String[] args)
    {

Scanner scan = new Scanner(System.in);

int total;
boolean play;
int computerTotal = 0;
String hitOrStick;

System.out.println("You are playing BLACK JACK.");

    int card1 = (int) Math.ceil(Math.random() * 10);
    int card2 = (int) Math.ceil(Math.random() * 10);
    total = card1+card2;

    System.out.println("Card 1 value: "+ card1);
    System.out.println(" ");
    System.out.println("Card 2 value: "+ card2);
    System.out.println(" ");
    System.out.println("You have: " + total);
    System.out.println(" ");

    if(total == 21)
        {
        System.out.println("Blackjack! Congratulations you have won!");
        }
    while(total < 21)
        {
        System.out.println("Would you like to hit or stick? please type 'H' or 'S'");
        System.out.println(" ");
        System.out.println("If you type anything other than the options it will count as a STICK.");
        hitOrStick = scan.next();
        }   
        if(hitOrStick == "H")
            {
            int hitCard = (int) Math.ceil(Math.random() * 10);
            System.out.println("New Card value: "+ hitCard);
            total = total + hitCard;
            System.out.println(" ");
            System.out.println("You now have: " + total);
                if(total > 21)
                {
                System.out.println("YOU ARE BUST!");
                }
            }
            else
            {
            System.out.println(" ");
            System.out.println("You have chosen to stick.");
            System.out.println(" ");
            System.out.println("Your total is: " + total);
            computerTotal = (int) Math.ceil(Math.random() * 20);
            System.out.println(" ");
            System.out.println("the computer has: " + computerTotal);
            }

            if (computerTotal > total)
            {
            System.out.println(" ");
            System.out.println("COMPUTER WINS!");
            }
            else
            {
            System.out.println(" ");
            System.out.println("YOU WIN!");
            }





}
}
import java.util.Scanner;
导入java.util.Random;
导入java.lang.*;
21点
{
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
整数合计;
布尔游戏;
int computerTotal=0;
弦hitOrStick;
System.out.println(“你在玩黑杰克”);
int card1=(int)Math.ceil(Math.random()*10);
int card2=(int)Math.ceil(Math.random()*10);
总计=卡1+卡2;
System.out.println(“卡1值:+card1”);
System.out.println(“”);
System.out.println(“卡2值:+card2”);
System.out.println(“”);
System.out.println(“您有:“+total”);
System.out.println(“”);
如果(总数=21)
{
System.out.println(“21点!恭喜你赢了!”);
}
而(总数<21)
{
System.out.println(“你想打还是坚持?请键入'H'或'S'”);
System.out.println(“”);
System.out.println(“如果您键入选项以外的任何内容,它将被视为一根棍子”);
hitOrStick=scan.next();
}   
如果(hitOrStick==“H”)
{
int hitCard=(int)Math.ceil(Math.random()*10);
System.out.println(“新卡值:+hitCard”);
总计=总计+hitCard;
System.out.println(“”);
System.out.println(“您现在有:“+total”);
如果(总数>21)
{
System.out.println(“你完蛋了!”);
}
}
其他的
{
System.out.println(“”);
System.out.println(“您选择了坚持。”);
System.out.println(“”);
System.out.println(“您的总数为:“+total”);
computerTotal=(int)Math.ceil(Math.random()*20);
System.out.println(“”);
System.out.println(“计算机有:“+computerTotal”);
}
如果(计算机总数>总数)
{
System.out.println(“”);
System.out.println(“计算机赢了!”);
}
其他的
{
System.out.println(“”);
System.out.println(“你赢了!”);
}
}
}

只需声明初始值:

String hitOrStick = ""; // or null
编译器不会解释代码以确保在使用变量时将其设置为值,它只是指出这是可能的


事实上,如果您使用的是Eclipse,您可以设置首选项,使此编译器错误只是一个警告或忽略的条件。

只需声明一个初始值:

String hitOrStick = ""; // or null
编译器不会解释代码以确保在使用变量时将其设置为值,它只是指出这是可能的


事实上,如果您使用的是Eclipse,您可以设置首选项,使此编译器错误只是一个警告或忽略的条件。

编译器抱怨您的字符串变量没有初始值。将显式null设置为var。 例如
String hitOrStick=null

编译器抱怨字符串变量没有初始值。将显式null设置为var。 例如
String hitOrStick=null

在您的代码中:

int total;
boolean play;
int computerTotal = 0;
String hitOrStick;
几个变量已命名,但尚未初始化。这有助于对它们进行初始化:

int total = 0;
boolean play = false;
int computerTotal = 0;
String hitOrStick = "";
通过这样做,您可以确保更少的错误发生


出现错误的原因是hitOrStick已命名,但未初始化,然后在代码的后面,您有
if(hitOrStick==“H”)
(这不是一个好主意,最好是
if(hitOrStick.equals(“H”)
),可以在hitOrStick尚未初始化时调用它。

在您的代码中:

int total;
boolean play;
int computerTotal = 0;
String hitOrStick;
几个变量已命名,但尚未初始化。这有助于对它们进行初始化:

int total = 0;
boolean play = false;
int computerTotal = 0;
String hitOrStick = "";
通过这样做,您可以确保更少的错误发生



出现错误的原因是hitOrStick已命名,但未初始化,然后在代码的后面,您有
if(hitOrStick==“H”)
(这不是一个好主意,最好是
if(hitOrStick.equals(“H”)
),在hitOrStick尚未初始化时可以调用该函数。

将显式null添加到变量中,例如字符串hitOrStick=null;将显式null放入变量,例如字符串hitOrStick=null;或者你可以点击“继续”,看看程序是否崩溃。嗨,谢谢你的帮助,它工作了,但我被困在哪里,我应该结束while循环,因为atm总是要求H/Soption@user2233480你的while循环永远不会结束。查看条件:
while(total<21)
但是在您的循环中,total永远不会受到影响。你想让它超越你的许多if语句吗?只需移动一个}或者您可以单击“继续”并观察程序是否崩溃。您好,谢谢您的帮助。它工作正常,但我仍然无法确定while循环的结束位置,因为atm总是要求H/Soption@user2233480你的while循环永远不会结束。查看条件:
while(total<21)
但是在您的循环中,total永远不会受到影响。你想让它超越你的许多if语句吗?只要移动一个}循环内的初始化肯定会持续超过循环。这与范围无关。但是,如果前两张卡产生22,而
循环从未穿过它的主体,那么,实际上,将有一个未初始化变量的比较。循环内的初始化肯定会持续到循环结束之后。这与范围无关。然而,如果前两张卡产生22,而
while
循环从未穿过它的主体,那么实际上,将有一个co