首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使compChoice不返回null

无法使compChoice不返回null
EN

Stack Overflow用户
提问于 2012-11-08 00:52:32
回答 2查看 321关注 0票数 0

下面是我为核心程序本身编写的代码:

代码语言:javascript
复制
import java.util.Scanner;
import static java.lang.System.*;

public class RockPaperScissors
{
private String playChoice;
private String compChoice;

public RockPaperScissors()
{



}

public RockPaperScissors(String player)
{
    playChoice = player;
}

public void setPlayers(String player)
{
    playChoice = player;
    compChoice = "";
    int num;
    num = (int) (Math.random()*3);
    switch(num)
    {
    case 0 : compChoice = "R";break;
    case 1 : compChoice = "P";break;
    case 2 : compChoice = "S";break;
    }
    
    System.out.println(num + " " + compChoice);
    out.print(compChoice);
}

public String determineWinner()
{
    String winner="";
    
    if(playChoice == "R")
    {
        switch(compChoice)
        {
        case "R" : winner = "!Draw Game!";break;
        case "P" : winner = "!Computer wins <<Paper Covers Rock>>!";break;
        case "S" : winner = "!Player wins <<Rock Breaks Scissors>>!";break;
        }
    }
    else if(playChoice == "P")
    {
        switch(compChoice)
        {
        case "R" : winner = "!Player wins <<Paper Covers Rock>>!";break;
        case "P" : winner = "!Draw Game!";break;
        case "S" : winner = "!Computer wins <<Scissors Cuts Paper>>!";break;
        }
    }
    else if(playChoice == "S")
    {
        switch(compChoice)
        {
        case "R" : winner = "!Computer wins <<Rock Breaks Scissors>>!";break;
        case "P" : winner = "!Player wins <<Scissors Cuts Paper>>!";break;
        case "S" : winner = "!Draw Game!";break;
        }
    }
    return winner;
}

public String toString()
{
    String output="";
    
    output = "player had " + playChoice + "\n computer had " + compChoice + "\n " + determineWinner();
    
    return output;
}
}

这是我的跑步课:

代码语言:javascript
复制
import java.util.Scanner;
import static java.lang.System.*;

public class Lab10d
{
public static void main(String args[])
{
    Scanner keyboard = new Scanner(System.in);
    char response  ;
    
    //add in a do while loop after you get the basics up and running
    
        String player = "";
    
        out.print("Rock-Paper-Scissors - pick your weapon [R,P,S] :: ");
        
        //read in the player value
        player = keyboard.next();
    
        RockPaperScissors game = new RockPaperScissors(player);
        game.determineWinner();
        out.println(game);
    while(response.equals('y'))
    {
        out.print("Rock-Paper-Scissors - pick your weapon [R,P,S] :: ");
        player = keyboard.next();
        game.setPlayers(player);
        game.determineWinner();
        out.println(game + "\n");
        out.println("would you like to play again? (y/n):: ");
        response=  keyboard.next();
        
        
        
        
    }
    
}
}

下面是一个应该产生什么结果的例子:

石头纸-剪刀-挑选你的weaponR,P,S::r 玩家拥有R 计算机有P 电脑赢了<>! 你想再玩一次吗?是

如果你再投入比赛,它就停止了。

主要问题是如何使compChoice不表示null

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-08 01:09:36

main方法中的代码:

代码语言:javascript
复制
RockPaperScissors game = new RockPaperScissors(player);
game.determineWinner();

您可以在compChoice方法中初始化setPlayers()字符串,但从未调用该方法。然后打开compChoice (为null ),从而得到NullPointerException

这应该可以解决您的问题:

代码语言:javascript
复制
RockPaperScissors game = new RockPaperScissors(player);
game.setPlayers(player); // <-- insert this line.
game.determineWinner();

但是请注意,您没有保存determineWinner()返回的字符串,然后调用out.println(game);,它将再次调用determineWinner()方法.

还有这段代码

while(response == response)

将永远是一个没完没了的循环,我在您的循环中找不到一个break语句。

此外,从不将字符串与==进行比较,使用等量,谷歌的解释,甚至有数以百计这样的解释。所以这就是

if (playChoice == "R") // <-- WRONG

应该变成这样:

if (playChoice.equals("R")) // <-- right

if ("R".equals(playChoice)) // <-- right

票数 0
EN

Stack Overflow用户

发布于 2012-11-08 01:14:04

我只是快速地浏览了您的代码,实际上并没有测试/运行您的代码。但是我发现:使用strings方法来比较字符串,不要使用==来比较字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13280841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档