2012-02-11 103 views
0

我有一个任务来制作井字游戏的consol游戏,但我有点卡住了。教师提供了编码和驱动程序类的测试标准来测试我的TicTacToe.java。如果我在PlayTicTacToe.java的驱动程序类中运行以下,那么所有的工作都很好。Java驱动程序类错误

TicTacToe ttt = new TicTacToe(); 
ttt.playGame(); 

但是,如果我使用教师提供的(下),我得到的错误,我不知道为什么。

Scanner s = new Scanner(System.in); 
TicTacToe tictactoe = new TicTacToe('Sally', 'John'); 
System.out.print(“Would you like to play a game? Y/N: ”); 
String play = s.nextLine(); 
while(play.equals('Y')) 
{ 
tictactoe.playGame(); 
System.out.print(“Would you like to play a game? Y/N: ”); 
play = s.nextLine(); 
} 
TicTacToe tictactoe1 = new TicTacToe(“Sally”, “John”); 
TicTacToe tictactoe2 = new TicTacToe(“Sally”, “John”); 

// this will show true 
System.out.println(tictactoe1.equals(tictactoe2)); 
// this will invoke the toString as shown above 
System.out.println(tictactoe1); 

我得到的错误是上线井字游戏井字游戏=新井字游戏(“莎莉”,“约翰”);它会在'Sally'上产生一个红色下划线'错误的常量章程'错误

任何建议?

+0

单个字符用单引号''y''表示。字符串使用双引号'“John”'。所以用双引号替换单引号。 – 2012-02-11 23:06:08

回答

2

在java中,单引号用于表示字符(不是字符串),所以在单引号内只能有一个字符。

行更改为使用双引号:

new TicTacToe("Sally", "John"); 
+0

如果我用引号将它包裹起来,那么下面的行会打破,如System.out.print(“你想玩游戏吗?Y/N:”);现在给出了“令牌上的语法错误,删除这些令牌”的错误,整个System.out.print现在被加下红线。 – David 2012-02-11 23:11:05

+0

它看起来像你使用智能报价(一个微软的Word)。那些不起作用 - 确保您使用正规报价。 – 2012-02-11 23:12:39

+0

宾果!我应该更好地从单词到月食切割和粘贴。 – David 2012-02-11 23:18:45

1

该代码具有环绕名('Sally', 'John')单引号,而不是双引号("Sally", "John")。虽然有些语言可以使用(例如Python),但Java不允许使用它。

1

在Java中,什么都裹在一对'代表一个字符,而“表示一个字符串。

您提供‘莎莉’,这是错误的,将其更改为‘莎莉’。

即“S”是有效的,但“SS”是不是。

  • 你的错误可能是“无效字符常量”,而不是“无效字符常量”
0

章安格:

TicTacToe tictactoe = new TicTacToe('Sally', 'John'); 

到:

TicTacToe tictactoe = new TicTacToe("Sally", "John"); 

想必TicTacToe构造函数需要一个字符串。 'Sally'不是String

0

sally标有单引号(')。你也需要用双引号标记它(")。