Je suis nouveau sur Java et j'essaie de créer un programme qui prendra une chaîne, telle que «asdfg», et imprimera des mots et un nombre total associés à ces lettres.

Ainsi, «a» serait «pomme» et son numéro attribué est 10, «s» serait épinard, et son numéro attribué est 5, «d» serait «chien» et son numéro attribué serait 15, «f» serait être «grenouille» et son numéro attribué serait 20 et «g» serait «chèvre» et son numéro attribué serait 25. Le résultat ressemblerait à quelque chose comme «pomme épinard chien grenouille chèvre 75».

Le code que j'ai jusqu'à présent est

import java.util.Scanner;
import java.util.ArrayList;
import java.io.*;


public class PizzaTwo {
    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);

        System.out.println("Please enter the details of your order");
        String myList = scan.nextLine();


        for (int i = 0; i < myList.length(); i++) {
            int letNum = 0;
            switch (myList.charAt(i)) {
                case 'a':
                    System.out.println("apple" + letNum);
                    letNum += 10;
                    break;
                case 's':
                    System.out.println("spinach" + letNum);
                    letNum += 5;
                    break;
                case 'd':
                    System.out.println("dog" + letNum);
                    letNum += 15;
                    break;
                case 'f':
                    System.out.println("frog" + letNum);
                    letNum += 20;
                    break;
                case 'g':
                    System.out.println("goat", letNum);
                    letNum += 25;
                    break;
                default:
                    System.out.println("Nothing..");
                    break;
            }
        }


    }
}

Merci pour toute aide.

-2
A_Number 21 avril 2017 à 00:43

3 réponses

Meilleure réponse

Tout d'abord, j'aimerais vous suggérer d'utiliser de meilleurs noms pour les variables.

Vous étiez en train de réinitialiser le "letNum" dans chaque boucle, puis je l'ai sorti de la boucle.

Je recommande de lire String et StringBuilder. Les objets String sont immuables, donc au lieu de créer plus de variables pour concaténer des "saveurs", j'ai utilisé StringBuilder qui sont mutables.

Les chaînes sont constantes; leurs valeurs ne peuvent pas être modifiées après leur création

Les principales opérations sur un StringBuilder sont les méthodes d'ajout et d'insertion, qui sont surchargées afin d'accepter des données de tout type

import java.util.Scanner;

public class PizzaTwo {

    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);

        System.out.println("Please enter the details of your order");
        String flavors = scan.nextLine();

        int price = 0;
        StringBuilder order = new StringBuilder();

        for (int i = 0; i < flavors.length(); i++) {
            switch (flavors.charAt(i)) {
            case 'a':
                order.append("apple ");
                price += 10;
                break;
            case 's':
                order.append("spinach ");
                price += 5;
                break;
            case 'd':
                order.append("dog ");
                price += 15;
                break;
            case 'f':
                order.append("frog ");
                price += 20;
                break;
            case 'g':
                order.append("goat ");
                price += 25;
                break;
            default:
                order.append("No flavor added ");
                break;
            }
        }

        System.out.println(order.append(price));
    }
}
0
Edson Martins 20 avril 2017 à 23:41

Il semble que vous vouliez que les nombres n'apparaissent qu'après que tous les mots aient été imprimés, d'après votre description "pomme épinard chien grenouille chèvre 75", mais votre code semble essayer d'ajouter le numéro à la fin de chaque mot.

En supposant que vous vouliez que la sortie soit comme votre exemple de sortie, n'essayez pas d'imprimer les nombres après chaque mot, mais après que tous les mots ont été imprimés, imprimez la variable que vous avez utilisée pour accumuler chaque lettre value, 'letNum' dans votre code.

Aussi, ne réinitialisez pas 'letNum' chaque fois que vous traitez avec une nouvelle lettre.

0
E.D. 20 avril 2017 à 22:12

Prenez 2 variables séparées, 1 chaîne et un autre nombre. Chaque fois concaténer avec la chaîne existante, cela signifie quelque chose comme String s = ""; int n = 0; s + = "Pomme"; n + = 10; s + = "grenouille"; .... Maintenant, lorsque la boucle est terminée, affichez la chaîne puis le nombre.

0
Sukanya Sen 20 avril 2017 à 22:37