J'apprends actuellement comment imprimer une textarea avec des données à l'intérieur, mais j'ai du mal à essayer de penser à un moyen de supprimer des lignes qui ont des valeurs vides habituellement, seulement Color1 & Color2 Avec leurs poids ont une valeur, il atteint très rarement Color8. Bien que Color8 et son poids n'a pas de valeur Comment puis-je m'assurer qu'il n'est pas affiché dans le Texarea uniquement s'il a une valeur? P> P>
5 Réponses :
Vous pouvez stocker des couleurs et des poids dans un < Code> LinkedHashMap code> mais insérez uniquement les valeurs ayant un poids attribué. Vous pouvez ensuite convertir les entrées en une chaîne code> code>:
Ensuite, vous ne pouvez pas répéter les couleurs que vous les utilisez comme une clé.
Je suppose que vous devriez avoir une gamme de valeurs et utiliser une méthode comme ci-dessous où vous vérifiez s'il existe une couleur, si oui, ajoutez ensuite à la sortie.
int index=0; StringBuilder result=new StringBuilder(); while(index<colors.length && Strings.isNotEmpty(colors[index]){ result.append(colors[index]); result.append(DELIMITER); // \t\t\t result.append(weights[index]); result.append("\n"); } return result;
Vous voulez probablement incrémenter l'index code> code> quelque part, actuellement il reste à 0 code>
Si vous ne voulez pas utiliser de tableaux pour les couleurs, vous pouvez vérifier si chaque couleur est une chaîne vide:
TextArea.setText("COLOR\t\t:\t WEIGHT:" + "\n=====================================\n" + !color1.equals("")?color1 +"\t\t\t "+ weight1 + "\n" +:""; !color2.equals("")?color2 +"\t\t\t "+ weight2 + "\n" +:""; !color3.equals("")?color3 +"\t\t\t "+ weight3 + "\n" +:""; !color4.equals("")?color4 +"\t\t\t "+ weight4 + "\n" +:""; !color5.equals("")?color5 +"\t\t\t "+ weight5 + "\n" +:""; !color6.equals("")?color6 +"\t\t\t "+ weight6 + "\n" +:""; !color7.equals("")?color7 +"\t\t\t "+ weight7 + "\n" +:""; !color8.equals("")?color8 +"\t\t\t "+ weight8:""; );
public static void main(String[] args) { String color1 = ""; String color2 = ""; String color3 = ""; String color4 = ""; String color5 = ""; String color6 = ""; String color7 = ""; String color8 = ""; int weight1 = 0; int weight2 = 0; int weight3 = 0; int weight4 = 0; int weight5 = 0; int weight6 = 0; int weight7 = 0; int weight8 = 0; List<String> colors= Arrays.asList(color1, color2 , color3 , color4 , color5 , color6 , color7 , color8); List<String> colors2= colors.stream().filter(p -> colors.isEmpty()).collect(Collectors.toList()); List<Integer> weights = Arrays.asList(weight1, weight2, weight3, weight4, weight5, weight6, weight7, weight8); stamp(colors2,weights); } private static void stamp (List<String> colors, List<Integer> weights) { String header ="COLOR\t\t:\t WEIGHT:" + "\n=====================================\n"; String row = ""; int i = 0; for (String color : colors) { row = row + color +"\t\t\t "+ weights.get(i)+ "\n"; i++; } System.out.println(header+row); }
Essayez de cette façon
List<String> colors = new ArrayList<>(); List<Integer> weights = new ArrayList<>(); String text = "COLOR\t\t:\t WEIGHT:" + "\n====================================="; if (!colors.isEmpty() && !weights.isEmpty()) { for (String color : colors) { if (weights.get(colors.indexOf(color) != null) { text = text + "\n" + color +"\t\t\t "+ weights.get(colors.indexOf(color)); } } } TextArea.setText(text);
Tout d'abord, utilisez des matrices (et évitez la couleur1 ... 8) et si la couleur et le poids sont liés à l'autre, alors peut-être que c'est un objet.