2010-12-30 5 views
0

Я работаю в небольшой задаче, которая позволяет пользователю вводить регионы любой страны и хранить их в одном массиве. Кроме того, каждый раз, когда он входит в регион, система попросит его войти в соседей этого региона и сохранить этих соседей.Печать двухмерного массива в специальном формате

Я сделал всю задачу, но у меня есть небольшая проблема:

я не мог быть в состоянии напечатать каждый регион и его сосед, как в следующем формате:

 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

Как знак говорит: «Отсутствие планирования с вашей стороны не является чрезвычайной с моей стороны.» http://www.officeplayground.com/Assets/ProductImages/pi1000-1499/1035LP_LackOfPlanningSign_1B.jpg – DVK

+2

Возможный дубликат [Печать двухмерного массива] (http://stackoverflow.com/questions/4563282/printing-two-dimensional- array) – DVK

+1

Вам действительно нужно переключиться на объектно-ориентированный стиль, если вы серьезно относитесь к Java. Даже если я вижу некоторые подозрительные вещи в вашем коде, это поможет, если вы расскажете о проблеме, с которой вы столкнулись. –

ответ

1

Как я вижу, вы думаете, что ваша проблема связана с зубчатым 2-мерным массивом. Я думаю, ваша проблема в том, что вы используете массивы строк в первую очередь. Я бы предложил использовать класс для моделирования регионов и их соседей, а не массива строк.

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

Затем хранить хэш известных регионов, создавая новые по мере необходимости, и использовать их для заполнения соседей региона по мере необходимости. Затем вы можете перебирать регионы в своем хеше и для каждого региона перебирать своих соседей.

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()); 
} 
Смежные вопросы