2016-05-21 3 views
0

J'ai codé un programme qui prend un nombre et affiche les chiffres du nombre en mots. Jusqu'à présent, mon code compte les chiffres de la droite. Comment puis-je réparer cela?transformer les chiffres d'un nombre en mots

Mon code:

/*/ Write a program that reads an integer and extracts and displays each digit 
     of the integer in English. So, if the user types in 451, 
     the program will display four five one /*/ 

import static java.lang.System.*; 
import java.util.*; 

class Practice_Problems04_JavaPrograms_Task09{ 
    public static void main(String[] args){ 
     Scanner orcho = new Scanner(in); 
     String[] myArray = {"zero" , "one" , "two" , "three" , "four" , "five" , "six" , "seven" , "eight" , "nine"}; 
     out.print("Please type your number: "); 
     double number = orcho.nextDouble(); 

     for(int count = 0; count <= number; count++){ 
      number /= 10.0; 
      out.print(myArray[(int)(10 * (number - (int)number))] + " "); 
     } 
     out.println(); 

     orcho.close(); 
    } 
} 
+1

Avez-vous essayé d'imprimer 'nombre' dans la boucle? Est-ce qu'il imprime la commande que vous attendez? –

+1

Aussi la question indique clairement «qui lit un entier» pourquoi utilisez-vous un 'nombre double ='? il suffit de coller avec 'Integer' pour éviter les vérifications et les erreurs inutiles. –

+0

Cela pourrait aider à aller dans l'autre sens. Votre problème est divisé par dix est toujours de la droite. http://stackoverflow.com/questions/6757708/display-first-n-digits-of-a-number-in-java –

Répondre

1

Depuis c'est un exercice et il est à des fins d'apprentissage, je ne fournirai pas de code. Juste un ensemble d'étapes de ce que vous devez faire:

  1. Vous avez déjà un tableau avec le nom de nombres, qui est très bien
  2. Ne pas utiliser un double pour obtenir le numéro, le bâton avec entier comme la question clairement il indique that reads an integer
  3. le convertir en une chaîne
  4. boucle chaque caractère de la chaîne
  5. Autre chaque caractère à un nombre entier de nouveau (à l'intérieur de la boucle) '
  6. il suffit d'imprimer cette position à partir de y notre tableau de nombres nom. Astuce: Avec une méthode qui ne crée pas une nouvelle ligne pour chaque impression :)

Ce serait bien!
Allez apprendre à faire chacune de ces étapes si vous ne le faites pas! Un autre indice: Si vous convertissez l'entrée en chaîne, il vous suffit de l'obtenir en tant que chaîne en premier. Mais vous devrez vérifier si ce ne sont que des chiffres, n'est-ce pas? ;)

+1

Pour ne pas être impoli, mais j'ai déjà fait la même chose sans "fournir de code", et on m'a dit que ce n'était pas la façon dont fonctionne SO. Juste un mot d'avertissement. – finnrayment

+0

@frayment merci pour vos conseils. Je l'ai vu aussi, mais je réponds toujours de toute façon, il y a des ennemis partout donc ... :) Je pense que fournir des mesures aux nouveaux arrivants est toujours la voie à suivre alors le code. –

+1

@frayment oh, et vous n'étiez pas grossier du tout. J'aime être critiqué pour le bien ou le mal si c'est fait aussi poli que vous venez de le faire :) –

1

Pourquoi s'embêter avec des chiffres? Vous voulez les caractères, de sorte que vous pouvez utiliser la chaîne que vous obtenez de l'entrée:

Scanner orcho = new Scanner(System.in); 
String[] myArray = {"zero" , "one" , "two" , "three" , "four" , "five" , "six" , "seven" , "eight" , "nine"}; 
System.out.print("Please type your number: "); 
String number = orcho.next(); 
for (int i=0; i < number.length(); i++) { 
    System.out.println(myArray[number.charAt(i)-48]); 
    // -48 because 0 has the ASCII value 48 
}