以特殊格式打印二维阵列

时间:2010-12-30 15:47:42

标签: java

我正在开展一项小任务,允许用户输入任何国家/地区的区域并将其存储在一个阵列中。此外,每次他进入一个地区,系统都会要求他进入该输入地区的邻居并存储这些邻居。

我完成了整个任务,但我遇到了一个小问题:

我无法打印每个区域及其邻居,如下所示:

       Region A: neighbour1 neighbour2 

       Region B: neighbour1 neighbour2 

例如,让我们拍摄美国地图。我想打印结果如下:

       Washington D.C: Texas, Florida, Oregon

等等。

我的代码是:

    import java.io.*;
    import java.util.Arrays;
    import java.util.Scanner;
    public class Test7{public static void main(String[] args) {
    Scanner kb = new Scanner(System.in);

    System.out.print("Please enter the number of regions: ");
    int REGION_COUNT = kb.nextInt();
        String[] regionNames = new String[REGION_COUNT]; 
    String[][] regions = new String[REGION_COUNT][2];
    for (int r = 0; r < regions.length; r++) {
        System.out.print("Please enter the name of region #" + (r + 1)
                + ": ");
        regionNames[r]  = kb.next();
        System.out
        .print("How many neighbors for region #" + (r + 1) + ": ");
        if (kb.hasNextInt()) {
            int size = kb.nextInt();
            regions[r] = new String[size];
            for (int n = 0; n < size; n++) {
                System.out.print("Please enter the neighbour #" + (n)
                        + ": ");
                regions[r][n] = kb.next();
            }
        } else
            System.exit(0);
    }

    for (int i = 0; i < REGION_COUNT; i++) {
        System.out.print(regionNames[i] +": ");
    for (int k = 0; k < 2; k++) {
        System.out.print(regions[i][k]+", ");
    }
    System.out.println();
    }
    }
}

代码工作正常,但问题是仅打印结果。 另外,我应该使用二维数组。

2 个答案:

答案 0 :(得分:1)

在我看来,你认为你的问题是处理锯齿状的二维阵列。我认为你的问题是你首先使用的是字符串数组。我建议使用一个类来模拟你的区域和它们的邻居,而不是一个字符串数组。

public class Region
{
     private String Name;
     public void setName( String name ) {
         this.Name = name;
     }
     public String getName() {
         return this.Name;
     }

     private ArrayList<Region> Neighbors;
     public void addNeighbor( Region neighbor ) {
        ...
     }

     public ArrayList<Region> getNeighbors()
     {
         ...
     }
}

然后保留已知区域的哈希值,根据需要创建新区域,并根据需要使用这些区域填充区域的邻居。然后,您可以迭代哈希中的区域,并为每个区域迭代其邻居。

答案 1 :(得分:0)

这就是你想要的:

for (int i = 0; i < region.length; i++){
   StringBuilder sb = new StringBuilder();
   sb.append(region[i] + ": ");
   for (int i2 = 0; i2 < neighbor.length; i2++){
      if (i2 != 0 && i2 != neighbor.length-1){
         sb.append(", " + neighbor[i2]);
      }else{
         sb.append(neighbor); //it still need a validation of an array of 2 Strings
      }
   }
   System.out.println(sb.toString());   
}