Blog coding and discussion of coding about JavaScript, PHP, CGI, general web building etc.

Saturday, February 20, 2016

Java 2D array column

Java 2D array column


Hello this is just a simple 2d array problem, I'd like to display my 2 array elements in 2 columns like this:

Countries Cities
Phils Manila
SK Seoul
Japan Tokyo
Israel Jerusalem

Here is my tried code:

public class ArrayExercise {      public static void main(String[] args){              String[][] myArray = {              {"Philippines", "South Korea", "Japan", "Israel"}, // Countries              {"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities          };            System.out.print( "Countries\tCities\n" );            for( int row = 0; row < myArray.length; ++row ){              System.out.print( "" );              for( int col = 0; col < myArray[row].length; ++col ){                    System.out.print( "" + myArray[row][col] + "\t" );                }          }          System.out.println( "" );      }    }  

But I can't get it to display in 2 columns..Any help is surely appreciated. Thanks guys :)

Answer by David Grant for Java 2D array column


You're not adding a newline after looping through myArray[row]. You need to add this after the loop to print a new line:

System.out.println();  

In general, if you want a line-ending, don't call System.out.print("\n"), but rather System.out.println(). System.out.println() uses the system line-ending, which isn't necessarily a newline character (\n).

Answer by Rohit Jain for Java 2D array column


UPDATE :- Here's the way to print them in 2 columns: -

    String[][] myArray = {              {"Philippines", "South Korea", "Japan", "Israel"}, // Countries              {"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities      };        int j = 0;        while (j < myArray[0].length) {          System.out.printf("%-15s - %-15s", myArray[0][j], myArray[1][j++]);          System.out.println();      }  

Since you want to print values of two rows parallelly for each column..
You can iterate over columns, and print values of both the rows for that corresponding column..

NOTE :- I have used value 15 for formatting.. In general that may give you wrong result, when the length of your string (country or city) is greater than that..

For, more improvement, you can replace 15 with the length of longest country string and longest city string, from two rows..

Answer by vainolo for Java 2D array column


First, you need to find out the lenght of the longest element of the first column (the countries), say the maximum length is 5, and you want to have a leading space at every line. And you also need to find the maximum lenght of the second column, say here it is 8. When you have done this, you can print the elements using a String.format:

outputString = String.format("%1$6s %2$8s\n",country, city);  System.out.println(outputString);  

The formatter sets the width of the first parameter to X, so you will get a correct indentation. This will work with string of any length.

Answer by swemon for Java 2D array column


How about iterating col first and then row..

for( int col = 0; col < myArray[0].length; ++col ){              for( int row = 0; row < myArray.length; ++row ){                  System.out.print(myArray[row][col]);                  System.out.print("\t");              }              System.out.println();          }  

Explanation:

Your two dimensional array is like that

  • Philippines[0,0] South Korea[0,1] Japan[0,2] Israel[0,3]

  • Manila[1,0] Seoul[1,1] Tokyo[1,2] Jerusalem[1,3]

But your wants is here[row, col] is previous index.

  • Philippines[0,0] Manila[1,0]
  • South Korea[0,1] Seoul[1,1]
  • Japan[0,2] Tokyo[1,2]
  • Israel[0,3] Jerusalem[1,3]

So iterate outerloop with column. Inside innerloop, iterate with row and use "\t" to separate. After inner loop, I print a new line.

Answer by aws for Java 2D array column


If you know for sure you're dealing with just two lists of equal-length do:

public class ArrayExercise {      public static void main(String[] args){          String[][] data = {              {"Philippines", "South Korea", "Japan", "Israel"}, // Countries                                                                                                                                                               {"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities                                                                                                                                                              };            System.out.print("Countries\tCities\n");          int colLength = data[0].length;          for (int i = 0; i < colLength; ++i) {              System.out.printf("%s\t%s\n", data[0][i], data[1][i]);          }      }  }  

This will give the (tabbed) output:
Countries Cities
Philippines Manila
South Korea Seoul
Japan Tokyo
Israel Jerusalem


Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72

0 comments:

Post a Comment

Popular Posts

Powered by Blogger.