我是一名新程序员,我必须完成一个程序,该程序将建立一个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之间。分数:”。
答案 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而不是打印。
祝你好运