我的项目终于完成了,但我唯一的问题是我的老师不接受我们的代码中的“休息”。有人可以帮我解决这个问题,我已经做了好几天了,我似乎无法让程序在不使用它们的情况下工作。中断位于我的DropYellowDisk和DropRedDisk方法中。除了那个问题,我的连接四个程序是完美无缺的。
private static void DropYellowDisk(String[][] grid) {
int number = 0;
Scanner keyboard = new Scanner (System.in);
System.out.println("Drop a yellow disk at column (1–7): ");
int c = 2*keyboard.nextInt()+1;
for (int i=6;i>=0;i--)
{
if (grid[i][c] == " ")
{
grid[i][c] = "Y";
break;
}}
}
private static void DropRedDisk(String[][] grid) {
Scanner keyboard = new Scanner (System.in);
System.out.print("Drop a red disk at column (1–7): ");
int c = 2*keyboard.nextInt()+1;
for (int i =6;i>=0;i--)
{
if (grid[i][c] == " ")
{
grid[i][c] = "R";
break;
}
}}
答案 0 :(得分:8)
我的老师不接受"休息"
从编程的角度来看,这简直太愚蠢了(尽管我确信它具有指导性的优点)。
但在这种特殊情况下,这是一个简单的解决方法,因为break
的循环都在各自方法的末尾。因此,您可以使用return
语句替换它们。即:
private static void DropYellowDisk(String[][] grid) {
for (int i=6;i>=0;i--)
{
if (grid[i][c] == " ")
{
grid[i][c] = "Y";
return; //break
}}
}
答案 1 :(得分:4)
boolean flag = false;
for (int i=6;i>=0 && !flag;i--) {
if (grid[i][c] == " ") {
grid[i][c] = "Y";
flag = true;
}
}
答案 2 :(得分:3)
您可以使用boolean
标志而不是使用while
循环中断。您还应该通过equals
方法比较字符串。
private static void DropYellowDisk(String[][] grid) {
int number = 0; boolean flag=true;
Scanner keyboard = new Scanner (System.in);
System.out.println("Drop a yellow disk at column (1–7): ");
int c = 2*keyboard.nextInt()+1;
int i=6;
while(i>=0&& flag)
{
if(grid[i][c].equals(" "))
{
grid[i][c]="Y";
flag=false;
}
i--;
}
}