如何解决MAKING GAME BOARD:如何缩短这个创建数组的代码,以及如何打印出来?
这是我写的代码
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();
}
有两个问题我真的无法解决:
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,maxLength));
builder.append(createBlankNameLine(maxLength));
builder.append(createDashedLine(cities,maxLength));
builder.append(System.lineSeparator());
builder.append(createDashedLine(cities,5,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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。