(对我来说)我的代码

时间:2017-08-10 08:04:21

标签: java

我一直致力于一个项目,需要多解释才能告诉你这是什么。

我想让程序给你写一张地图(在控制台上),所以我写了所有建筑物的X和Y,它们将在地图上,以及homeChars' chars意味着,建筑物如何在地图上看。

首先,我尝试将控制台写入第一行,这应该是AOOOS(每个字母控制台写在另一行,我将来会改变它),但不知何故,控制台抛出AOOOO而不是

public static void main(String []args){

    int homeXs[] = {1, 1, 3, 3};
    int homeYs[] = {1, 5, 3, 3};
    char homeChars[] = {'A', 'S', 'H', 'D'}; //ARMORY, STORE, HOME, DUNGEONS
    char homePlace[] = {'O', 'O', 'O', 'O', 'O'};

    for(int a = 0; a <= 4; a++){
        for(int b = 0; b <= 3; b++){
            if (homeYs[b] == 1) {
                if (homeXs[b] == a+1) {
                    homePlace[a] = homeChars[b];
                }
            }
        }

    }
    for(int c = 0; c <= 4; c++) {
        System.out.println(homePlace[c]);
    }

}

Q1:为什么控制台会记下S的内容,哪里有bug以及如何解决?我已深入研究代码,但无法找到它......

Q2:如何让AOOOS写在同一行?如果我做:

System.out.println(homePlace [0] + homePlace [1] + homePlace [2] + homePlace [3] + homePlace [4]);

代码会很丑陋而且它无法正常工作,不知何故它会抛出一个数字......

任何帮助将不胜感激,

Enej Lah

2 个答案:

答案 0 :(得分:1)

  1. 您在第二个a = 0, b = 0中的唯一值是AOOOS。因此,无法制作阵列System.out.print()
  2. 您可以在循环中使用{{1}}。

答案 1 :(得分:0)

首先,我建议您重构代码,例如

if (homeYs[b] == 1) {
    if (homeXs[b] == a+1) {
         homePlace[a] = homeChars[b];
    }
}

等于:

if (homeYs[b] == 1 && homeXs[b] == a+1) {
    homePlace[a] = homeChars[b];
}

将导致:

    for(int a = 0; a <= 4; a++){
        for(int b = 0; b <= 3; b++){
           if (homeYs[b] == 1 && homeXs[b] == a+1) {
                homePlace[a] = homeChars[b];
           }
        }

所以它会使你的意图更加清晰。因此,您现在可以看到为什么要在控制台中获得此结果。

关于打印,您可以考虑以下列方式使用Java 8流API:

Arrays.asList(homePlace)
         .stream()
      .forEach(System.out::print);
System.out.println()

要使流API工作,需要确保您的项目配置了Java 1.8,例如使用maven,以下将执行此操作:

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <target>1.8</target>
          <source>1.8</source>
          <testTarget>1.8</testTarget>
        </configuration>
      </plugin>
    </plugins>
  </build>