Java 字符串变量可能尚未初始化(错误显示到第34行)

Java 字符串变量可能尚未初始化(错误显示到第34行),java,string,initialization,Java,String,Initialization,我一直试图初始化字符串,但没有成功。我已经尝试了我遇到的所有解决方案,我不确定这是因为我的无能还是因为我需要一个新的解决方案我已经有了程序的逻辑,所以我只需要帮助初始化字符串值。如果有人能帮忙,我将不胜感激 还有,诅咒我想要挑战和使用srings-_- import java.util.Scanner; import java.util.Random; public class RockPaperScissors { public static void main (String[] args

我一直试图初始化字符串,但没有成功。我已经尝试了我遇到的所有解决方案,我不确定这是因为我的无能还是因为我需要一个新的解决方案我已经有了程序的逻辑,所以我只需要帮助初始化字符串值。如果有人能帮忙,我将不胜感激

还有,诅咒我想要挑战和使用srings-_-

import java.util.Scanner;
import java.util.Random;

public class RockPaperScissors
{
public static void main (String[] args)
{
    String player, computer;
    int answer;
    Scanner scan = new Scanner (System.in);

    Random generator = new Random();
    answer = generator.nextInt(3) + 1;

    if (answer < 1 || answer > 3)
            answer = generator.nextInt(3) + 1;

    if (answer == 1)
        computer = "rock";
    if (answer == 2)
        computer = "paper";
    if (answer == 3)
        computer = "scissors";

    System.out.println ("Please choose rock, paper, or scissors.");
    player = scan.nextLine();

    if (!player.equalsIgnoreCase("rock") || !player.equalsIgnoreCase("paper") 
            || !player.equalsIgnoreCase("scissors"))
    {
        System.out.println ("Please correctly enter one of the three 
                    choices: rock, paper, and scissors.");
        player = scan.nextLine();
    }

    if (player.compareTo(computer) == 0)
        System.out.println ("It's a draw!  You both chose " + player + 
                    "!");

    if ((computer.equalsIgnoreCase("rock") &&  
            player.equalsIgnoreCase("scissors")) && 
            (computer.equalsIgnoreCase("scissors") && player.equalsIgnoreCase("paper")) 
            && (computer.equalsIgnoreCase("paper") && player.equalsIgnoreCase("rock")))
        System.out.println ("You lost!  The computer chose " + computer + " 
                    and you chose " + player + ".");

    if ((player.equalsIgnoreCase("rock") &&  
            computer.equalsIgnoreCase("scissors")) && 
            (player.equalsIgnoreCase("scissors") && 
            computer.equalsIgnoreCase("paper")) && 
            (player.equalsIgnoreCase("paper") &&     
            computer.equalsIgnoreCase("rock")))
            System.out.println ("You won!  CONGRATULATIONS!  The computer chose             
                    " + computer + " and you chose " + player + ".");

}
import java.util.Scanner;
导入java.util.Random;
公营剪纸机
{
公共静态void main(字符串[]args)
{
弦乐演奏者,电脑;
int答案;
扫描仪扫描=新扫描仪(System.in);
随机生成器=新随机();
答案=发电机。下一个(3)+1;
如果(答案<1 | |答案>3)
答案=发电机。下一个(3)+1;
如果(答案=1)
computer=“rock”;
如果(答案=2)
计算机=“纸张”;
如果(答案=3)
计算机=“剪刀”;
System.out.println(“请选择石头、布或剪刀”);
player=scan.nextLine();
如果(!player.equalsIgnoreCase(“岩石”)| |!player.equalsIgnoreCase(“纸张”)
||!player.equalsIgnoreCase(“剪刀”))
{
System.out.println(“请正确输入三个选项中的一个
选择:石头、布和剪刀;
player=scan.nextLine();
}
如果(播放器与(计算机)==0)
System.out.println(“这是一场平局!你们都选择了”+player+
"!");
如果((计算机等信号情况(“岩石”)和
玩家等信号(剪刀)和
(计算机等信号机(“剪刀”)和播放器等信号机(“纸”))
&&(computer.equalsIgnoreCase(“纸”)和player.equalsIgnoreCase(“摇滚”))
System.out.println(“您输了!计算机选择了“+计算机+”
你选择了“+玩家+”;
如果((玩家同等信号(“摇滚”)和
计算机等信号(剪刀)和
(player.equalsIgnoreCase("剪刀"),
计算机、同等信号(纸)和
(player.equalsIgnoreCase)("纸"),
计算机等信号(岩石)
System.out.println(“你赢了!恭喜!计算机选择了
“+computer+”,您选择了“+player+”;
}
}

将此更改为

String computer = null;  or ""// initialized
if (player.compareTo(computer) == 0)

因为,变量计算机将根据条件进行分配。如果您提到的上述条件不满足。值为none,因此只显示错误。

如果我完全理解您的问题,请记住您不能在Java中执行此操作:

String str = "here is some
    random text";
你能做的就是

String str = "here is some " + 
    "random text";

换句话说-不能在行尾断开字符串,必须关闭它并使用
+
符号。

您可以通过两种方式初始化
字符串的值:

String abc = "I love basketball";

你看到的是警告而不是错误。如果您坚持不在
字符串中输入值,只需这样做即可

String abc = null;    

在后一种情况下,字符串初始化为引号之间的字符。基本上没有,但它不是
null

为避免潜在的
NPE
问题,请按如下方式比较
字符串
s:

"rock".equalsIgnoreCase(playerChoice);

编译器看到你有一台字符串计算机。他还可以看到这台计算机已初始化为回答1、2或3。但因为它不能读取逻辑,它不知道答案是否可以是或不能是更低或更高,所以它假设最坏的可能性是计算机不会被初始化

把你的排队换成

String computer = "";

应该没问题。

所以,在声明字符串变量时,请将其设置为“”。
String abc = ""  
"rock".equalsIgnoreCase(playerChoice);
String computer = "";