Java上的5x5数组框?

时间:2014-03-30 19:10:16

标签: java arrays

我是一名新程序员,我必须完成一个程序,该程序将建立一个5 x 5的盒子阵列。行应编号为1-5,列也应编号为1-5。计算机应该选择随机列号和行号,并且在此单元格中应该隐藏数字7.用户应该以10个点开始,并且将被要求选择行和列。计算机应检查指示的框以查看它是否包含数字7.如果是,则应打印用户的分数,棋盘并结束游戏。如果所选框不包含数字7,则应从用户分数中减去一个并显示该板。玩家选择另一个盒子继续游戏。游戏应该以这种方式继续,直到玩家找到编号为7的方框或者他们的分数为零。

我只是无法得到这个程序,有人可以帮助我并告诉我应该添加到我的程序中/出了什么问题吗?

import java.io.*;
import java.util.Scanner;
public class Program6

{
public static void main (String args[])
{
Scanner scanner = new Scanner(System.in);
int num, score=10, b, a, x,y,r=0,c=0;

int columnrow[][]= new int[5][5];
char board[][]= new char[5][5];
char show[][]=new char[5][5];


x=(int)(Math.random()*5);
y=(int)(Math.random()*5);
columnrow[x][y]=7;


while(r!=x&&c!=y){
System.out.println("Pick row: ");
r=scanner.nextInt();
System.out.println("Pick column: ");
c=scanner.nextInt();
for(a=0; a<=4; a++){
  for(b=0; b<=4; b++){
    columnrow[a][b]=0;
    board[a][b]='O';
    show[a][b]='O';
    System.out.println(show[a][b]);
}

}

if(r==x&&y==c){
System.out.println("You win! Score: "+score);
}
if(r>5||r<1){
score=score-1;
System.out.print("Row is not between 1 and 5. Score: "+score);
}
if(c>5||c<1){
score=score-1;
System.out.print("Column is not between 1 and 5. Score: "+score);
}
}}}

我遇到的一个问题是,在用户选择一个列和一行并且它不在1和5之间之后,程序再次询问问题并且不输出“行不在1和5之间。分数:”或“列不在1到5之间。分数:”。

2 个答案:

答案 0 :(得分:1)

对每列使用System.out.print,并在每行末尾打印\n,例如:

for(a=0; a<=4; a++){
    for(b=0; b<=4; b++){
        columnrow[a][b]=0;
        board[a][b]='O';
        show[a][b]='O';
        System.out.print(show[a][b]);
    } 
    System.out.println("");
}

答案 1 :(得分:0)

既然你没有告诉我们你的问题是什么,请在这里写下我在你的代码中看到的所有错误(也许我错过了一些):

1)使用此代码来打印数组(如果你使用不同的方法,它会更好):

    for(a=0; a<=4; a++){
      for(b=0; b<=4; b++){
         columnrow[a][b]=0;
         board[a][b]='O';
         show[a][b]='O';
         System.out.print(show[a][b]);
      } 
      System.out.println("");
    }

2)当用户输入一个列或一个行号时,你应该从中减去1(因为java数组从0开始)

3)给vars更好的名字,很难理解代码与#34; c&#34;

除此之外,代码的逻辑看起来还不错,有些地方我会使用println而不是打印。

祝你好运