2014-10-31 4 views
-2

Я пробовал эту кодировку, но не показывал результат, который я хочу. Предположим начать с 1 = 31java array month table

import java.util.Scanner; 
public class cth { 
public static void main(String args[])  { 


    int day[]= new int[12]; 

    day[0] = 31; 
    day[1] = 28; 
    day[2] = 31; 
    day[3] = 30; 
    day[4] = 31; 
    day[5] = 30; 
    day[6] = 31; 
    day[7] = 31; 
    day[8] = 30; 
    day[9] = 31; 
    day[10] = 30; 
    day[11] = 31; 

       System.out.printf("\t Year 2013\n\n"); 
       System.out.printf("\t--------------\n\n"); 
       System.out.printf("\t%s%8s\n\n","Month","cou.day"); 

       for (int j = 1; j<=day.length; j++){ 

       System.out.printf("\t%2d%8d\n", j, day[j]); 
       } 
    } 
    } 

Какова функция% 2d8d%? я был смущен

+0

Это специальные форматирующие преобразователи. [Этот учебник] (http://docs.oracle.com/javase/tutorial/java/data/numberformat.html) объясняет, как они работают. – Ben

+0

Возможно, вы должны изменить 'day [j]' на 'day [j-1]', поскольку индексы в вашем массиве начинаются с 0. –

ответ

2
for (int j = 1; j<=day.length; j++){ 
    System.out.printf("\t%2d%8d\n", j, day[j]); 
} 

Ваша первая линия производства была бы 1 28, но ваш массив начинается с [0], так как цикл из 0 или печати day[j-1].

Для значения %2d8d% это печатное одно целое, заполненное достаточным количеством пробелов, чтобы заполнить 2 столбца, а затем второе целое число с отступом до 8 символов. См. this documentation для более подробной информации.