2012-10-09 29 views
12

Tôi đã phải viết mã cho:Làm thế nào để sắp xếp chuỗi trên giao diện điều khiển đầu ra

Multiplication Tables Description: Print out the grade school multiplication table upto 12*12

tôi đã viết mã:

public class tables { 
    public static void main(String[] args) { 
     //int[][] table = new int[12][12]; 
     String table=""; 
     for(int i=1; i<13; i++){ 
      for(int j=1; j<13; j++){ 
       //table[i-1][j-1] = i*j; 
       table+=(i*j)+" "; 
      } 
      System.out.println(table.trim()); 
      table=""; 
     } 
    } 
} 

Nhưng vấn đề là với các định dạng đầu ra. Tôi cần đầu ra trong một ma trận như thời trang, mỗi số được định dạng với chiều rộng là 4 (các số được căn phải và loại bỏ các dấu cách đầu/cuối trên mỗi dòng). Tôi đã thử google nhưng không tìm thấy bất kỳ giải pháp tốt nào cho vấn đề của tôi. Ai có thể giúp tôi không?

+4

'String.format ("% 4s", ...) ' – khachik

+2

@khachik: bạn có thể mô tả cách' String.format (% 4s ", ...)' hoạt động không? Và đối số thứ hai trong 'format()'? –

Trả lời

33

Bạn có thể sử dụng format() để định dạng đầu ra của bạn theo nhu cầu của bạn ..

for(int i=1; i<13; i++){ 
     for(int j=1; j<13; j++){ 

      System.out.format("%5d", i * j); 
     } 
     System.out.println(); // To move to the next line. 
    } 

Hoặc, bạn cũng có thể sử dụng: -

System.out.print(String.format("%5d", i * j)); 

ở vị trí của System.out.format ..

Dưới đây là giải thích về cách %5d hoạt động: -

  • Thứ nhất, vì chúng ta đang in số nguyên, chúng ta nên sử dụng %d đó là format specifier cho số nguyên ..
  • 5 trong %5d nghĩa là tổng chiều rộng đầu ra của bạn sẽ mất .. Vì vậy, nếu giá trị là 5, nó sẽ được in để trang trải 5 không gian như thế này: - ****5
  • %5d được sử dụng để class đúng .. Đối với xếp thẳng trái, bạn có thể sử dụng %-5d. Đối với một giá trị 5, điều này sẽ in đầu ra của bạn như sau: - 5****
+0

Thanx là gì. trong câu trả lời của bạn như thế nào '% 5s' hoạt động trong' format() '? –

+0

@MohammadFaisal .. Bạn có thể sử dụng'% 5d' vì bạn đang in số nguyên .. Tôi sẽ giải thích trong bài viết .. –

+0

@MohammadFaisal: check [javadoc] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#format (java.lang.String, java.lang.Object ...)) cung cấp cho liên kết đến [chi tiết] (http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#detail) –

1

Trong ví dụ của tôi mảng chứa ký tự chuỗi với độ dài khác nhau và do đó tôi đã không thể sắp xếp chuỗi và chuỗi khác của mảng khác nhau là mis- khớp trên bảng điều khiển. với một khái niệm khác, tôi có thể sắp xếp những mảng trên bảng điều khiển của tôi như sau.

package arrayformat; 

/** 
* 
* @author Sunil 
*/ 
public class ArrayFormat { 



    /** 
    * @param args the command line arguments 
    */ 

    public static void main(String[] args) { 

    int[] productId = new int[] 
{1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,}; 
    String[] productName= new String[]{"Pepsi","kissan jam","Herbal 
oil","Garnier man's","Lays chips","biscuits","Bournvita","Cadbury","Parker 
Vector","Nescafe",}; 
    String[] productType = new String[]{"Cold Drink","Jam","Oil","Face 
wash","chips","Biscuits","Health 
Supplement","Chocolate","Stationary","Coffee",}; 
    float[] productPrice = new float[]{24,65,30,79,10,20,140,20,150,80,}; 


     int productNameMaxlength=0; 
    int productTypeMaxlength=0; 



    for (String productName1 : productName) { 
     if (productNameMaxlength < productName1.length()) { 
      productNameMaxlength = productName1.length(); 
     } 
    } 


    for (String productType1 : productType) { 
     if (productTypeMaxlength < productType1.length()) { 
      productTypeMaxlength = productType1.length(); 
     } 
    } 



    for(int i=0;i<productType.length;i++) 

    { 
       System.out.print(i); 

     System.out.print("\t"); 

       System.out.print(productId[i]); 

       System.out.print("\t"); 

       System.out.print(productName[i]); 

     for(int j=0;j<=productNameMaxlength-productName[i].length 
    ();j++) 

     { 

     System.out.print(" "); 

     } 

     System.out.print("\t"); 

     System.out.print(productType[i]); 

     for(int j=0;j<=productTypeMaxlength-productType[i].length 
    ();j++) 

     { 
      System.out.print(" "); 
     } 

       System.out.print("\t"); 

     System.out.println(productPrice[i]); 
      }   
     } 

    } 
    and output is-- 
    Sr.No ID  NAME   TYPE    PRICE 
    0 1001 Cadbury   Chocolate   20.0 
    1 1002 Parker Vector Stationary   150.0 
    2 1003 Nescafe   Coffee    80.0 
    3 1004 kissan jam  Jam     65.0 
    4 1005 Herbal oil  Oil     30.0 
    5 1006 Garnier man's Face wash   79.0 
    6 1007 Lays chips  chips    10.0 
    7 1008 biscuits  Biscuits   20.0 
    8 1009 Bournvita  Health Supplement 140.0 
    9 1010 Pepsi   Cold Drink   24.0 

Vì tôi không thể trả lời câu hỏi của mình khi tôi đặt câu hỏi vì khối đặt câu hỏi và trả lời Tôi trích dẫn câu trả lời của mình và đây là một loại định dạng mảng khác.

+0

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có đủ [danh tiếng] (http://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bài đăng bất kỳ] (http://stackoverflow.com/help/privileges/comment). – AlBlue

+0

Vì tôi không thể trả lời câu hỏi của mình khi tôi đặt câu hỏi vì câu hỏi để đặt câu hỏi và trả lời tôi trích dẫn câu trả lời của tôi và đây là một loại định dạng mảng khác mà tôi cảm thấy. –

0

Định dạng đầu ra có thể được thực hiện bằng phương pháp System.out.format ("", "") phương pháp này chứa hai tham số đầu vào đầu tiên xác định kiểu định dạng và giá trị xác định thứ hai cần in. Giả sử bạn muốn căn chỉnh giá trị n chữ số. bạn sẽ chuyển tham số đầu tiên "% 4d".

Đối với việc sử dụng class trái -ve% -nd

Để sử dụng class ngay ve% nd

for(int i=1; i<13; i++){ 
     for(int j=1; j<13; j++){ 
      System.out.format("%4d", i * j); //each number formatted to a width of 4 so use %4d in the format method. 
    } 
    System.out.println(); // To move to the next line. 
} 
Các vấn đề liên quan