Je travaille sur le problème pour trouver le prochain numéro le plus grand avec le même ensemble de chiffres. P>
Pour cela, je prends une valeur de valeur entière de l'utilisateur et je souhaite convertir en tableau de caractères, afin que je puisse accéder à des chiffres individuels. P>
mais quand je prends p>
5 Réponses :
Il n'est pas possible de convertir un Prenez cet échantillon. p> 09 code> int Valeur sur une chaîne de
9 code> car la valeur
09 code> ne peut pas être stockée dans un
INT code>.
int code> n'est pas capable de stocker des zéros de fin. P>
public Integer[] parseToInteger(String number) {
return Arrays.asList(number.toCharArray())
.stream()
.map(c -> Integer.valueOf(c.toString()))
.toArray(size -> new Integer[size]);
}
09 code> ne peut pas être couler i> à une chaîne. Appelant
ValeurOf Code> n'est pas Casting i>, c'est une opération analysant i>. Le mot "casting" a une signification très particulière dans la langue Java, alors veuillez corriger votre terminologie.
@Andreas bonne prise! Je voulais citer l'auteur sur "INT = 09 comme entrée et convertir en graphique" car ce n'est pas PASIBE. va le changer!
Ce que vous venez de dire dans ce commentaire pourrait être encore pire, car int x = 09 code> ne parviendrait pas à compiler, étant donné que
9 code> n'est pas un chiffre valide dans un littéral octal. Vous n'auriez peut-être pas eu la signification de cette façon, mais ... une clarté de ce que vous dites compte, alors payez un peu plus d'attention à la façon dont vous dites des choses, s'il vous plaît.
Eh bien c'est exactement ce que je viens d'écrire. Il n'est pas possible de stocker 09 code> dans un
int code>. La chose que j'ai dit dans mon commentaire est une citée aux auteurs post ...
Il n'est pas possible dans Java de prendre les valeurs INT avec des zéros de premier plan. Donc, pour la valeur avec des zéros de premier plan, prenez-la au format de la chaîne. P>
Mais nous pouvons insérer des zéros p>
int n = 7;
String str = string.format ("% 04d", n); // 4 désigne la taille de la chaîne
System.out.println (str); // o / p-> 0007 p> blockQuote> blockQuote>
Une raison quelconque de votre réponse est une citation? Qui / qu'est-ce que vous citez?
Étant donné que les hauts 0 sont déposés des entiers, il n'ya aucune raison de prendre en charge l'attribution d'une telle valeur à un int.
si je veux convertir Vous pouvez également faire ce qui suit: p> si vous avez Une chaîne de caractères, vous pouvez procéder comme suit: p> impression p> 9 code> sur
'9' code > J'ajouterais généralement
'0' code> à celui-ci. P>
Il n'est pas possible d'attribuer un entier avec un (code> 0 code> à un par exemple strong> p> int code> variable par exemple.
int x = 09; code> échouera la compilation. Vous devez obtenir l'entrée comme une chaîne
code> et le traiter.
Vous vous demandez comment analyser un numéro à partir d'un zéro directeur, mais je reçois le sentiment que vous êtes en fait sur la piste de Worng étant donné le problème que vous essayez de résoudre. Alors, prenons un pas en arrière et assurons-vous que je comprends votre problème correctement.
Vous dites que vous devez trouver le "prochain numéro le plus grand avec le même ensemble de chiffres". Donc, vous jouez "Scrabble" avec des chiffres, essayant de trouver le numéro le plus smalest composé avec les mêmes chiffres qui sont strictement supérieurs au nombre d'origine. Par exemple, étant donné l'entrée "09", vous produiriez "90", et pour "123", vous produiriez "132". Est-ce correct? Laissez-la supposer. P>
Maintenant, le véritable défi Voici comment déterminer le nombre le plus smalest composé avec ceci chiffres qui est stricidement plus grande au nombre d'origine. En fait, il y a quelques stratégies possibles: p>
Les trois stratégies ont une chose en commun: ils ont tous besoin de travailler (à un moment donné au moins) avec chiffres em> plutôt qu'avec le nombre lui-même. Dans la dernière stratégie, vous n'avez jamais besoin de la valeur réelle elle-même. Vous jouez simplement au Scrabble, avec des chiffres plutôt que des lettres. P> Ainsi, supposant que vous souhaitez implémenter la stratégie 3, voici ce que votre Voici le point de toutes ces discussions: la méthode code> ParetOdigits code> est un Notez que sur l'opportunité opposée, < Code> JOINDIGITS CODE>, il ressemblerait à: p> espère que cela aide. p> p> principale code> peut ressembler (je ne développerai pas plus Sur celui-ci, les commentaires devraient être assez loin): p>
String code> et renvoyer un tableau de chiffres (j'ai utilisé
int code> ici pour garder les choses plus simples, mais
octet code> aurait réellement été suffisant). Donc, fondamentalement, vous souhaitez prendre les caractères de la chaîne d'entrée et convertir cette matrice à un tableau d'entier, avec chaque position dans la sortie contenant la valeur du chiffre correspondant dans l'entrée. Cela peut être écrit de différentes manières en Java, mais je pense que le plus simple serait avec un simple
pour code> boucle: p>
Caractère.fordigit (chiffre, radix) code> renvoie la valeur du caractère
chiffre code> dans la base
radix code>; Si
chiffre code> n'est pas valide pour la base donnée,
fordigit code> renvoie
0 code>. Pour la simplicité, je saute une vérification de la validation adéquate ici. On pourrait envisager d'appeler
caractère.isdigit (chiffre, radix) code> d'abord pour déterminer si un chiffre est acceptable, jetant une exception si ce n'est pas le cas. P>
Prenez l'entrée en tant que chaîne plutôt que si vous souhaitez conserver une rubrique 0. ALORS
.TOCHARARRAY () CODE> La chaîne de stockage de tableau de caractères.
Les variables entière stockent la valeur numérique, pas la représentation textuelle, elles ne peuvent donc pas suivre les zéros de pointe.
9 code>,
09 code>,
009 code>, ... sont toutes la même valeur numérique, i.e.
9 code>. Comme Tim a commenté, si vous devez connaître les principaux zéros dans l'entrée, vous devez obtenir cela comme une chaîne code> code>, pas comme un
int code>.
"
09 code>" comme valeur octale? Je l'aime :)
Sent comme des devoirs ici, et je pense que vous allez réellement dans la mauvaise manière. Peut-être devriez-vous essayer de mieux expliquer ce que vous essayez vraiment de faire. Vous dites que vous devez trouver le "prochain plus grand nombre avec le même ensemble de chiffres". Si je l'obtiens correctement, la réponse "09" serait "90" et pour "123", vous obtiendriez "132" ... Est-ce correct? Maintenant, comment pouvez-vous planifier de résoudre ce problème? Ne pensez pas encore au code Java. Vous souhaitez considérer chaque chiffre fourni et les déplacer en quelque sorte. Pensez à cela, alors vous pouvez envisager de mettre à jour votre question.