Java 制作游戏板:如何缩短创建阵列的代码,以及如何将其打印出来?
我正在制作一个游戏板,上面打印出如下内容: 这是我写的代码Java 制作游戏板:如何缩短创建阵列的代码,以及如何将其打印出来?,java,arrays,printing,arrayindexoutofboundsexception,Java,Arrays,Printing,Arrayindexoutofboundsexception,我正在制作一个游戏板,上面打印出如下内容: 这是我写的代码 void showBoard() { String city1, city2, city3, city4, city5, city6, city7, city8, city9, city10; // I wrote like this because I want each box to have the size to hold 11 characters. city1 = "Cari
void showBoard() {
String city1, city2, city3, city4, city5, city6, city7, city8, city9, city10;
// I wrote like this because I want each box to have the size to hold 11 characters.
city1 = "Cario ";
city2 = "Phuket ";
city3 = "New delhi ";
city4 = "Hanoi ";
city5 = "Paris ";
city6 = "LA ";
city7 = "Sydney ";
city8 = "Tokyo ";
city9 = "Seoul ";
city10 = "START ";
char[][] cities = new char[10][];
for (int i = 0; i < 10; i++) {
cities[i] = new char[11];}
cities[0] = city1.toCharArray();
cities[1] = city2.toCharArray();
cities[2] = city3.toCharArray();
cities[3] = city4.toCharArray();
cities[4] = city5.toCharArray();
cities[5] = city6.toCharArray();
cities[6] = city7.toCharArray();
cities[7] = city8.toCharArray();
cities[8] = city9.toCharArray();
cities[9] = city10.toCharArray();
for (int i = 0; i < 11; i++)
System.out.print(cities[0][i]);
for(int k = 0; k < 2; k++) {
for (int q = 0; q < 5; q++) {
for(int i = 0; i < 13; i++) {
System.out.print("-");}}
System.out.println();
//There's the <Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10 > error because of the code from here....
for(int i = 0; i < 2 ; i++) {
for(int j = 0; j < 5; j++) {
for (int q = 0; q < cities.length; q++) {
if (q%11 == 0)
System.out.print("|");
else {
for (int p = 0; p < cities[q].length; p++ )
System.out.print(cities[p][q]);
}
}
System.out.print(" ");
}
System.out.println();}
//to here
for (int q = 0; q < 5; q++) {
for(int i = 0; i < 13; i++) {
System.out.print("-");}}
System.out.println();
if (k == 0) {
for(int i = 0; i < 65; i++) {
if (i == 0)
System.out.print("↑");
else if (i == 64)
System.out.println("↓");
else
System.out.print(" ");}}
}
System.out.println();
}
void展示板(){
字符串city1、city2、city3、city4、city5、city6、city7、city8、city9、city10;
//我这样写是因为我希望每个框的大小能容纳11个字符。
city1=“Cario”;
city2=“普吉岛”;
city3=“新德里”;
城市4=“河内”;
city5=“巴黎”;
city6=“LA”;
city7=“悉尼”;
city8=“东京”;
city9=“首尔”;
city10=“开始”;
char[][]城市=新char[10][];
对于(int i=0;i<10;i++){
城市[i]=新字符[11];}
城市[0]=城市1.toCharArray();
城市[1]=city2.toCharArray();
城市[2]=city3.toCharArray();
城市[3]=city4.toCharArray();
城市[4]=city5.toCharArray();
城市[5]=city6.toCharArray();
城市[6]=city7.toCharArray();
城市[7]=city8.toCharArray();
城市[8]=city9.toCharArray();
城市[9]=城市10.toCharArray();
对于(int i=0;i<11;i++)
系统输出打印(城市[0][i]);
对于(int k=0;k<2;k++){
对于(int q=0;q<5;q++){
对于(int i=0;i<13;i++){
System.out.print(“-”;}
System.out.println();
//出现错误是因为这里的代码。。。。
对于(int i=0;i<2;i++){
对于(int j=0;j<5;j++){
对于(int q=0;q
有两个问题我真的无法解决:
1.缩短城市代码[0~9]=city1~10.toCharArray()
2.像图像一样打印出阵列
这些盒子无法打印出漂亮的分开的盒子,所以我只是把它们放在坠落的梯子里,这是我一次测试的结果
-----------------------------------------------------------------------
| Cario | Phuket | New Delhi | Hanoi | Paris |
| | | | | |
-----------------------------------------------------------------------
-----------------------------------------------------------------------
| Los Angeles | Sydney | Tokyo | Seoul | START |
| | | | | |
-----------------------------------------------------------------------
我写了一个方法,用最长的名字告诉我城市的长度。我测试了这个方法
然后,我编写了一个创建虚线的方法。我测试了这个方法
然后我写了一个方法,给我10个城市名称中的5个。我测试了这个方法好几次。我修复了以前方法中出现的问题
然后我将所有的方法放在一起创建您看到的输出
写一点,测试一点。你不可能编写一个完整的方法,比如showBoard
,然后期望它正常工作。写一点,测试一点。然后使用方法来分离代码的逻辑块
我懒得去查箭头符号,我把代码留给你
下面是完整的可运行代码
public class ConsoleGameBoard {
public static void main(String[] args) {
System.out.println(new ConsoleGameBoard().showBoard());
}
public String showBoard() {
String[] cities = { "Cario", "Phuket", "New Delhi", "Hanoi", "Paris",
"Los Angeles", "Sydney", "Tokyo", "Seoul", "START" };
StringBuilder builder = new StringBuilder();
int maxLength = getMaximumLength(cities);
builder.append(createDashedLine(cities, maxLength));
builder.append(createCityNameLine(cities, 0, maxLength));
builder.append(createBlankNameLine(maxLength));
builder.append(createDashedLine(cities, maxLength));
builder.append(System.lineSeparator());
builder.append(createDashedLine(cities, maxLength));
builder.append(createCityNameLine(cities, 5, maxLength));
builder.append(createBlankNameLine(maxLength));
builder.append(createDashedLine(cities, maxLength));
return builder.toString();
}
private StringBuilder createDashedLine(String[] cities, int maxLength) {
StringBuilder builder = new StringBuilder();
int dashLength = (maxLength + 1) * cities.length / 2 + 2 * cities.length / 2 + 1;
for (int index = 0; index < dashLength; index++) {
builder.append('-');
}
builder.append(System.lineSeparator());
return builder;
}
private StringBuilder createCityNameLine(String[] cities, int startIndex, int maxLength) {
String formatter = "%-" + maxLength + "s";
StringBuilder builder = new StringBuilder();
for (int index = startIndex; index < startIndex + 5; index++) {
builder.append("| ");
builder.append(String.format(formatter, cities[index]));
builder.append(" ");
}
builder.append("|");
builder.append(System.lineSeparator());
return builder;
}
private StringBuilder createBlankNameLine(int maxLength) {
String formatter = "%-" + maxLength + "s";
StringBuilder builder = new StringBuilder();
for (int index = 0; index < 5; index++) {
builder.append("| ");
builder.append(String.format(formatter, " "));
builder.append(" ");
}
builder.append("|");
builder.append(System.lineSeparator());
return builder;
}
private int getMaximumLength(String[] cities) {
int maxLength = 0;
for (int index = 0; index < cities.length; index++) {
maxLength = Math.max(maxLength, cities[index].length());
}
return maxLength;
}
}
公共类控制台主板{
公共静态void main(字符串[]args){
System.out.println(新控制台主板().showBoard());
}
公共字符串展示板(){
字符串[]城市={“卡里奥”、“普吉岛”、“新德里”、“河内”、“巴黎”,
“洛杉矶”、“悉尼”、“东京”、“首尔”、“起点”};
StringBuilder=新的StringBuilder();
int maxLength=getMaximumLength(城市);
append(createDashedLine(cities,maxLength));
append(createCityNameLine(cities,0,maxLength));
append(createBlankNameLine(maxLength));
append(createDashedLine(cities,maxLength));
append(System.lineSeparator());
append(createDashedLine(cities,maxLength));
append(createCityNameLine(cities,5,maxLength));
append(createBlankNameLine(maxLength));
append(createDashedLine(cities,maxLength));
返回builder.toString();
}
私有StringBuilder createDashedLine(字符串[]城市,int maxLength){
StringBuilder=新的StringBuilder();
int dashLength=(maxLength+1)*cities.length/2+2*cities.length/2+1;
对于(int index=0;index