2010-12-30 9 views
0

私は、ユーザーが任意の国の地域を入力して1つの配列に格納することを可能にする小さな仕事をしています。また、彼が地域に入るたびに、システムは彼に入力された地域の隣人に入り、これらの隣人を保管するように求める。2次元配列を特殊な形式で表示する

私は、全体のタスクをしましたが、私は小さな問題を抱えている:

私は各地域、次の形式のような隣国印刷することができませんでした:たとえば

 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

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