【发布时间】:2015-01-14 18:32:58
【问题描述】:
所以,我正在根据提供给我的说明创建一个井字游戏程序。看起来大部分代码都是完整的,除了编译时出现异常错误。
在所有以“placeHolder”开头的行上编译时“需要数组,但找到了字符”
例如:-placeHolder[1][0] = 'X';
谁能帮忙?
import java.awt.Color;
import java.util.Scanner;
public class TurtleTicTacToe {
private static char[] placeHolder = new char[9];
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args)
{
World w = new World();
Turtle t = new Turtle(w);
drawTicTacToeboard(t);
for (int i = 0; i < 9; i++)
{
placeHolder[i] = ' ';
}
int goesFirst = (int) (Math.random()*2);
if (goesFirst == 0)
{
int computerPick = (int) (Math.random()*9);
while (placeHolder[computerPick] != ' ')
{
computerPick = (int) (Math.random()*9);
}
drawOat(t, computerPick);
}
else
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (placeHolder[i] == ' ')
System.out.println("Pick a spot on the tic-tac-toe board between 0-8: ");
int pick = scanner.nextInt();
drawXat(t, pick);
}
}
}
}
public static void drawTicTacToeboard(Turtle t)
{
t.setPenWidth(4);
t.setPenColor(Color.black);
t.penUp();
t.moveTo(80, 180);
t.penDown();
t.setHeading(90);
t.forward(480);
t.penUp();
t.moveTo(80, 300);
t.penDown();
t.forward(480);
t.penUp();
t.moveTo(240, 60);
t.setHeading(180);
t.penDown();
t.forward(360);
t.penUp();
t.moveTo(400, 60);
t.penDown();
t.forward(360);
}
public static void drawXat(Turtle t, int pick)
{
int x = 0;
int y = 0;
if (pick == 1)
{
x = 160;
placeHolder[1][0] = 'X';
}
else if (pick == 2)
{
x = 320;
placeHolder[2][0] = 'X';
}
else if (pick == 3)
{
y = 120;
placeHolder[0][1] = 'X';
}
else if (pick == 4)
{
x = 160;
y = 120;
placeHolder[1][1] = 'X';
}
else if (pick == 5)
{
x = 320;
y = 120;
placeHolder[2][1] = 'X';
}
else if (pick == 6)
{
y = 240;
placeHolder[0][2] = 'X';
}
else if (pick == 7)
{
x = 160;
y = 240;
placeHolder[1][2] = 'X';
}
else if (pick == 8)
{
x = 320;
y = 240;
placeHolder[2][2] = 'X';
}
else
{
placeHolder[0][0] = 'X';
}
t.setPenWidth(2);
t.setPenColor(Color.blue);
t.penUp();
t.moveTo(90+x, 70+y);
t.penDown();
t.moveTo(230+x, 170+y);
t.penUp();
t.moveTo(90+x, 170+y);
t.penDown();
t.moveTo(230+x, 70+y);
}
public static void drawOat(Turtle t, int AI)
{
int x = 0;
int y = 0;
if (AI == 1)
{
x = 160;
placeHolder[1][0] = 'O';
}
else if (AI == 2)
{
x = 320;
placeHolder[2][0] = 'O';
}
else if (AI == 3)
{
y = 120;
placeHolder[0][1] = 'O';
}
else if (AI == 4)
{
x = 160;
y = 120;
placeHolder[1][1] = 'O';
}
else if (AI == 5)
{
x = 320;
y = 120;
placeHolder[2][1] = 'O';
}
else if (AI == 6)
{
y = 240;
placeHolder[0][2] = 'O';
}
else if (AI == 7)
{
x = 160;
y = 240;
placeHolder[1][2] = 'O';
}
else if (AI == 8)
{
x = 320;
y = 240;
placeHolder[2][2] = 'O';
}
else
{
placeHolder[0][0] = 'O';
}
t.setPenWidth(2);
t.setPenColor(Color.red);
t.penUp();
t.moveTo(90+x, 100+y);
t.setHeading(180);
t.penDown();
t.forward(40);
t.moveTo(140+x, 170+y);
t.setHeading(90);
t.forward(40);
t.moveTo(230+x, 140+y);
t.setHeading(0);
t.forward(40);
t.moveTo(180+x, 70+y);
t.setHeading(270);
t.forward(40);
t.moveTo(90+x, 100+y);
}
}
【问题讨论】:
-
您认为
placeHolder[1][0]是什么意思?那不是二维数组。 -
我以为你就是这样写二维数组的,myArray[i][j] = 0;
-
你认为我们会如何纠正它?
-
这就是您使用二维数组的方式,但只有当您实际使用的东西是二维数组时才有效。