开发者

Printing Two Dimensional Array in Special Format

开发者 https://www.devze.com 2023-02-02 07:31 出处:网络
I am working in a small task that allow the user to enter the regions of any country and store them in one array. Also, each time he enters a region, the system will ask him to enter the neighbours of

I am working in a small task that allow the user to enter the regions of any country and store them in one array. Also, each time he enters a region, the system will ask him to enter the neighbours of that entered region and store these neighbours.

I did the whole task but I have a small problem:

I could not be able to print each region and its neighbours like the following format:

       Region A: neighbour1 neighbour2 

       Region B: neighbour1 neighbour2 

For example, let us take USA map. I want to print the result as following:

       Washington D.C: Texas, Florida, Oregon

and so on.

My code is:

    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();
    }
    }
}

The code works fine but the problem is with printing the result only. Also, I should use the 2 dimensional array.


As I see it, you think your problem is dealing with a jagged 2-D array. I think your problem is that you're using arrays of strings in the first place. I'd suggest using a class to model your regions and their neighbors rather than an array of strings.

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()
     {
         ...
     }
}

Then keep a hash of the known regions, creating new ones as necessary, and use those to populate a region's neighbors as needed. Then you can iterate over the regions in your hash and, for each region, iterate over its neighbors.


This is what you want:

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());   
}
0

精彩评论

暂无评论...
验证码 换一张
取 消