2013-11-25 2 views
3

하나의 배열 인쇄를 갖는 하나의 .txt 파일에 여러 배열을 인쇄하려고합니다. 그러면 다른 열 인쇄판이 생성되고 다른 배열 인쇄가 어떻게 작동합니까?Java txt 파일에서 열을 인쇄하는 방법

내가 서식을 기억하지 못할이 내가 모든 열이 나는이

private static void makeFile(String[] name, String[] nickname, String[] capital, 
      String[] flowers, String[] population) throws FileNotFoundException 
{ 
    PrintWriter out = new PrintWriter ("out.txt"); 

    for (int i = 0; i< 50 ; i++) 
     out.println(name[i] +" \t "+ nickname[i]); 

    out.close(); 
} 

enter image description here

는 어떻게 해결합니까 인쇄 무엇인가가 지금 정렬해야 할 명령 그것들은 모두 정렬되어 있고 이것에 추가 할 3 개의 컬럼이 더 있습니다. 어떻게 정렬 할 수 있을까요 ??

+0

같은 것을 할 수있는, 난 당신이 첫 번째 열에서 허용되는 고정 된 값의 길이를 사용하는 것이 좋습니다 50, 60, 각 반복에 대해, 사이의 공간을 계산 말할 것 그 (것)들은 이름의 50 길이로 –

+0

어떻게 동일한 방법으로 배열 될 첫번째 2 후에 연속적인 란을 추가 하는가 ?? – dondon4720

답변

-1

문제는 일부 이름이 탭보다 커서 열이 엉망이되어 버리므로 대신 두 개를 사용해보십시오. 예 : 하나의 탭은 8 자이므로 다른 탭에서는 8 자 미만의 문자가 더있을 것입니다. (30) 이름의 최대 길이는 어디

6

당신은

String.format("%-30s %s", name[i], nickname[i]) 

같은 String.format를 사용해야합니다.

5

println 대신 printf을 C 스타일 형식 문자열과 함께 사용할 수 있습니다.

out.printf("%-16s%-24s\n", name[i], nickname[i]); 

이 인쇄 될 name[i] 왼쪽 맞춤 후 24 문자 폭 열에 nickname[i] 인쇄, 16 문자 자리한다. 열을 더 추가 할 때 형식 문자열에 필요한 최대 문자 수를 지정할 수 있습니다. 문자열을 왼쪽으로 맞추기 위해 - 기호가 추가되었습니다. 정렬에 문제가 있는지

0

에게 당신이

// Get the maximum length of any string in the array, or 0. 
private static int getMaxLength(String[] in) { 
    int c = 0; 
    if (in != null && in.length > 0) { 
    for (String i : in) { 
     i = (i != null) ? i.trim() : ""; 
     if (i.length() > c) { 
     c = i.length(); 
     } 
    } 
    } 
    return c; 
} 

// Pad any input string to the minimum length. 
private static String padString(String in, int min) { 
    in = (in != null) ? in.trim() : ""; 
    StringBuilder sb = new StringBuilder(in); 
    while (sb.length() < min) { 
    sb.append(' '); 
    } 
    return sb.toString(); 
} 

private static void makeFile(String[] name, 
    String[] nickname, String[] capital, 
    String[] flowers, String[] population) { 
    PrintWriter out = null; 
    try { 
    out = new PrintWriter("out.txt"); 

    // Add 1 to get at least 1 space between the maximum and the next item. 
    int namePadded = getMaxLength(name) + 1; 
    int nickPadded = getMaxLength(nickname) + 1; 
    int capitalPadded = getMaxLength(capital) + 1; 
    int flowersPadded = getMaxLength(flowers) + 1; 
    int populationPadded = getMaxLength(population); 

    for (int i = 0; i < name.length; i++) { 
     out.println(padString(name[i], namePadded) 
     + padString((nickname.length > i) ? nickname[i] 
       : "", nickPadded) 
     + padString((capital.length > i) ? capital[i] : "", 
      capitalPadded) 
     + padString((flowers.length > i) ? flowers[i] : "", 
      flowersPadded) 
     + padString((population.length > i) ? population[i] 
       : "", populationPadded)); 
    } 
    } catch (FileNotFoundException fnfe) { 
    fnfe.printStackTrace(System.err); 
    } finally { 
    out.close(); 
    } 
} 

public static void main(String[] args) { 
    String[] name = { "Alabama", "Alaska", "Arizona" }; 
    String[] nickname = { "Yellowhammer State", 
    "Last Frontier", "Grand Canyon State" }; 
    String[] capital = { 
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "Y", "Z" }; 
    String[] flowers = { "Rose", "Carnation", "Orchid" }; 
    String[] population = { "1", "100", "1000" }; 
    makeFile(name, nickname, capital, flowers, 
    population); 
} 
관련 문제