0
我已經發布了這段代碼,但是還有更多的問題,這次有一個變量初始化錯誤。第68行顯示錯誤的playerMove錯誤。我已經搜索了互聯網爲什麼它抱怨變量沒有被初始化爲無效。有人可以告訴我爲什麼我的IDE抱怨我沒有給playerMove分配一個值嗎?變量可能尚未在if/else if語句中初始化
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Rps extends JFrame
implements ActionListener
{
private final char moves[] = {'R', 'P', 'S'};
private JRadioButton rock, paper, scissors;
private JTextField display;
public Rps()
{
super("Rock, paper, Scissors");
rock = new JRadioButton(" Rock ", true);
paper = new JRadioButton(" Paper ");
scissors = new JRadioButton(" Scissors ");
ButtonGroup rpsButtons = new ButtonGroup();
rpsButtons.add(rock);
rpsButtons.add(paper);
rpsButtons.add(scissors);
JButton go = new JButton(" Go ");
go.addActionListener(this);
display = new JTextField(25);
display.setEditable(false);
display.setBackground(Color.yellow);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(rock);
c.add(paper);
c.add(scissors);
c.add(go);
c.add(display);
}
/**
* returns -1 if the player wins,
* 0 if it's a tie, and 1 if the computer wins
*/
private int nextPlay(char computerMove, char playerMove)
{
if ((computerMove == 'R'&&playerMove == 'S')||(computerMove == 'S'&&playerMove=='P')||(computerMove=='P'&&playerMove=='R')){
return 1;}
else if ((computerMove == 'R'&&playerMove == 'R')|| (computerMove=='S'&&playerMove=='S')||(computerMove=='P'&&playerMove=='P')){
return 0;}
return -1;
}
public void actionPerformed(ActionEvent e)
{
char playerMove, computerMove; //Errors start around here
if (rock.isSelected()){
playerMove = 'R';}
else if (paper.isSelected()){
playerMove = 'P';}
else if (scissors.isSelected()){
playerMove = 'S';}
int k = (int)(Math.random() * 3);
computerMove = moves[k];
int result = nextPlay(computerMove, playerMove); //More errors
String msg = " You said " + makeWord(playerMove) + ", I said " +
makeWord(computerMove); //Even more errors
if (result < 0)
msg += " -- you win.";
else if (result == 0)
msg += " -- tie.";
else if (result > 0)
msg += " -- I win.";
display.setText(msg);
}
private String makeWord(char move)
{
String word = "";
switch (move)
{
case 'R': word = "ROCK"; break;
case 'P': word = "PAPER"; break;
case 'S': word = "SCISSORS"; break;
}
return word;
}
public static void main(String[] args)
{
Rps window = new Rps();
window.setBounds(300, 300, 300, 140);
window.setDefaultCloseOperation(EXIT_ON_CLOSE);
window.setVisible(true);
}
}
這工作就像一個魅力的時候了。雖然我忘記了單引號,但對程序來說似乎並不重要。謝謝! – Showman
@Showman不客氣。你是什麼意思你忘了他們? –
@Showman哦,值'0'是一個'int'文字,適合'char'。例如,如果你有'char playerMove = g;'這樣的話就行不通。 –