Mise en forme Java Sortie Comme un Tableau
Je suis tente de sortie de l'information à l'égard des étudiants stockées par mon programme dans un tableau de format \t, ne donnent pas toujours le bon espacement. Pour ce faire, je suis tombé sur cette question et ont tenté de permettre une solution similaire. Cependant, je suis l'obtention d'erreurs avec le format de lignes dans mon code lorsque je tente de l'exécuter en tant que tel.
public void displayStudents (){
System.out.println ("\n-----------------------------");
System.out.println ("Email System - Display Students");
System.out.println ("-----------------------------");
System.out.format("%10s%15d%15s%15s%20s", "Grade", "Last Name", "First Name", "Student Number", "Parent Email");
StudentNode current = top;
while (current != null){
Student read = current.getStudentNode();
System.out.format ("%10s%15d%15s%15s%20s", ""+read.getClass(), read.getLastName(), read.getFirstName(), ""+read.getStudentNum(), read.getParentEmail());
//This will output with a set number of character spaces per field, giving the list a table-like quality
}
}//End of displayStudents
L'objectif du code est de sortie dans une manière similaire à l'image suivante.
Merci de m'aider à trouver mon erreur. Est-il sinon peut-être une méthode pour faire cela?
Grâce.
EDIT: L'erreur(s) que je suis se sont
GradeException in thread "main" java.util.IllegalFormatConversionException: d != java.lang.String
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printInteger(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.io.PrintStream.format(Unknown Source)
at StudentList.displayStudents(StudentList.java:184)
at OnlineCommunications.emailOption(OnlineCommunications.java:403)
at OnlineCommunications.main(OnlineCommunications.java:451)
Il convient de noter que le Grade est un entier et est la durée d'un double.
Désolé, j'ai ajouté de l'erreur. @LuiggiMendoza
OriginalL'auteur n0shadow | 2013-02-24
Vous devez vous connecter pour publier un commentaire.
L'erreur est parce que
%d
est pour les non-valeurs à virgule flottante (int
,long
, etc).Dans la ligne où vous imprimer les titres, vous devez utiliser
%XXs
(où XX est un nombre) puisque vous êtes de passageString
s comme paramètres:Dans la ligne à l'intérieur de la
while-loop
, vous devez définir%d
pour laint
etlong
variables, comme le Grade et le Numéro d'Étudiant, il n'y a pas besoin de le convertir àString
à l'aide de"" + intProperty
:Puisqu'il semble que vous voulez formater la sortie à gauche (et non pas le droit), vous devez ajouter un tiret (-) symbole avant le XX numéro:
Remarque: je suppose
read.getClass()
etread.getStudentNum()
serait de retour leGrade
etStudent number
valeursint
oulong
.vous êtes les bienvenus
Je sais que devriez-vous utiliser est le type de données est double>
est ce que vous cherchez. Vous pouvez en lire plus à partir de la javadoc de
Formatter
de classe.OriginalL'auteur Luiggi Mendoza
Le problème est:
devrait être:
C'est parce que tous les paramètres d'entrée sont
String
, doncd
(qui s'applique aux types intégraux seulement) n'est pas valide.Juste une petite question supplémentaire, il semble que ce droit aligne les "cellules" de la "table". Est-il possible de le faire à gauche aligner à la place?
qui est couvert dans ma réponse.
OriginalL'auteur Dukeling