2009-12-02 5 views
1

J'ai un tableau de 12 numérosquestion de mise en forme simple en Java en utilisant printf

int ary2[] = {3,5,9,11,15,18,22,23,30,31,35,39}; 

Je veux imprimer les numéros avec 2 places pour le nombre et un espace entre les numéros.

out print exemple serait:

3 5 9 11 15 18 22 23 30 31 35 39 

C'est jusqu'où je suis arrivé.

for(int i = 0; i < ary2.length; i++) 
{ 
    System.out.printf("%-3s", ary2[i]); 
} 

Je suis nouveau dans ce domaine. Bien que je ne le soumette pas directement comme devoir, il est affilié à un projet de devoirs à moi; par conséquent, je vais utiliser cette étiquette de devoirs de toute façon.

EDIT: réponse trouvée.

+1

Je pense que le format de la sortie souhaitée est perdu lorsque vous avez posté la question sans utiliser correctement les balises de code. Pouvez-vous s'il vous plaît modifier la question à nouveau avec la sortie désirée réelle? – BalusC

+0

Pouvez-vous expliquer le problème avec votre code existant? Les seules choses que je peux voir, c'est qu'il utilise l'alignement gauche. Je préférerais l'alignement à droite.mais il semble que l'alignement de gauche était intentionnel. L'autre chose est qu'il laisse un espace de fin inutile à la fin de la ligne. A part cela, il semble fonctionner comme prévu. –

+0

Je veux que chaque nombre ait un seul espace entre eux. Avec au moins 2 points désignés pour chaque entier dans le tableau. – Phil

Répondre

4

Je ne suis pas sûr si je comprends la question. Votre exemple de code semble déjà le faire. Ou voulez-vous les traiter comme des chiffres (aligner à droite)? Si oui, alors vous avez besoin de %d à la place (chiffre) de %s (chaîne de caractères). Voyez si les costumes suivants à vos besoins:

System.out.printf("%2d ", ary2[i]); 

Ce imprimerait:

3 5 9 11 15 18 22 23 30 31 35 39 

au lieu de ce que votre code d'origine a fait:

3 5 9 11 15 18 22 23 30 31 35 39 

vous suffit de vivre avec l'espace de fuite ;)

Vous pouvez trouver d'autres règles de formatage dans le java.util.Formatter API.

+0

Mais comme vous pouvez le voir, il y a 2 espaces entre les 2 premières lettres 3 et 5. – Phil

+0

Et merci pour le lien API – Phil

+1

Vous avez dit littéralement, vous vouliez 2 places pour le numéro? Que voulez-vous dire par là? – BalusC

0

Je ne sais pas quel est le problème, la lecture des autres réponses et commentaires, je pense que vous voulez afficher les numéros 0 rembourré:

System.out.printf(" %02d", ary2[i]); 

pas 0 rembourrées, 2 « lieux », comme les autres déjà écrit:

System.out.printf(" %2d", ... 

je mets les espaces au début ... mais juste mes préférences

vous pouvez utiliser un autre caractère un s séparateur insted de l'espace pour voir ce qui se passe.
Quelque chose comme System.out.printf("^%2d", ary2[i]);

Si vous voulez éviter l'espace au début ou à la fin de la ligne, vous devez diviser la sortie

System.out.printf("%2d", ary2[0]); // no space here 
    for(int i = 1; i < ary2.length; i++) 
    { 
     System.out.printf(" %2d", ary2[i]); 
    } 

ou quelque chose comme ça (pas mon préféré)

for(int i = 0; i < ary2.length; i++) 
    { 
     System.out.printf("%s%2d", (i == 0 ? "" : " "), ary2[i]); 
    }