Donc, je me suis défié de créer une simple calculatrice ayant incorporé un système d'entrée utilisateur.
Le premier bit de code (indiqué ci-dessous) demande à l'utilisateur quel est leur numéro et le stocke dans un double double fort> appelé "num." strong> p> Le programme demande ensuite à l'utilisateur ce qu'ils veulent faire (ajouter, soustraire, multiplier, diviser ou montrer la réponse) et je mets ceci Dans une boucle Mon problème est que je souhaite que le programme puisse prendre le numéro et ajouter, soustraire, etc., avec le nombre existant d'avant. Essentiellement, je veux que la valeur de la variable change à plusieurs reprises, mais je ne sais tout simplement pas comment faire cela. Strong> p> Par exemple, si l'utilisateur commence avec le numéro 2, et Ajoute 2, puis la multiplie par 4, la réponse devrait alors être de 16 ans. Je ne peux tout simplement pas obtenir mon code pour le faire. P> Je me rends compte que mon code a tort, considérant que je l'ai testé, mais je ne peux tout simplement pas envelopper la tête autour de ce que je dois faire. Je me sens comme si je suis proche, mais tout peut aller comme je suis toujours en quelque sorte nouveau à Java. P> Toute aide serait appréciée! Merci! P> Je pense que ce lien pourrait vous emmener sur le site pour le modifier et que ce n'est pas le cas: https://repl.it/@angelramirez6/basic-calculator p> Voici mon code: p> import java.util.Scanner;
class Main {
public static void main(String args[]) {
Scanner userWhatWillDo = new Scanner(System.in);
Scanner userNum = new Scanner(System.in);
double num, answer;
int what, numOfNums, keepGoing = 1;
while (keepGoing == 1) {
System.out.print("Enter a number: ");
num = userNum.nextDouble();
System.out.println("1=Add; 2=Subtract; 3=Multiply; 4=Divide; 5=Answer");
what = userWhatWillDo.nextInt();
switch(what) {
case 1:
num += num;
break;
case 2:
num -= num;
break;
case 3:
num *= num;
case 4:
num /= num;
}
if(what == 5) {
keepGoing = 2;
System.out.println(answer);
}
}
}
}
3 Réponses :
réponse code> à 0 li>
- Les lignes de votre commutateur doivent altérer
réponse code> li>
Scanner sc = new Scanner(System.in);
double num, answer=0;
int what, numOfNums, keepGoing = 1;
while (keepGoing == 1) {
System.out.println("Enter a number: ");
num = sc.nextDouble();
System.out.println("1=Add; 2=Subtract; 3=Multiply; 4=Divide; 5=Answer");
what = sc.nextInt();
switch(what) {
case 1:
answer += num;
break;
case 2:
answer -= num;
break;
case 3:
answer *= num;
break;
case 4:
answer /= num;
break
}
if(what == 5) {
keepGoing = 2;
System.out.println(answer);
}
}
- Utilisez
break code> dans chaque cas code> li>
ul> Aussi: p>
- Vérifiez que
Divisez par 0 CODE> LI>
- attrape des erreurs d'entrée non valides li>
ul>
xxx pré> pour corriger votre logique de calcul: p>
- Demandez le numéro et attribuer à
Réponse CODE> LI>
- Démarrez votre boucle Demander une opération, puis le numéro. Li>
ul> ul>
J'ai pris soin des scanners supplémentaires, corrigé mon erreur de modifier la variable NUM au lieu de la variable de réponse et a ajouté des pauses après chaque cas, et le programme peut fonctionner, mais les calculs semblent être tous gâchés. Lorsque je l'ai saisi 4 et divisé par 2 (essentiellement 4/2), le programme m'a donné 0,0 pour ma réponse. Une chose que j'ai remarquée, cependant, est que lorsque j'ai essayé de faire 5 + 5 + 5 + 5, la réponse a toujours été 5 de moins que la valeur qu'elle était censée donner. Par exemple, 5 + 5 + 5 + 5 = 15 au lieu de 20. Je pense que cela a quelque chose à voir avec la manière dont les valeurs sont stockées, puis utilisées?
Vous obtenez la mauvaise réponse car votre opération s'applique à la valeur précédente. Vous ignorez la dernière valeur lors de la sortie. Vous devez demander le numéro, définir la réponse à celle-ci, puis commencer la boucle, demandant d'abord l'opération.
> Lorsque je l'ai saisi 4 et divisé par 2. Vous faites 0/4, puis ignorez le 2.
Oh mon Dieu! Merci! Le code lui-même n'était pas du tout difficile, mais il était enroulé de la tête autour de quelles valeurs seraient assignées à quelles variables! J'ai fait ça juste; Correction de mon code sous vos corrections, couru mon code, mais la seule chose que la boucle tandis que la boucle tandis que de manquerait de mon code à la fin après avoir terminé la boucle (réglage de la maintenance = 2) et il me serait saisir un autre numéro Cela n'a rien fait du tout, mais ensuite, cela me donnerait la bonne réponse à tout calcul. Tout ce qu'il y avait laissé faire était de résoudre ce problème avec une simple boucle. Merci beaucoup!
appart Les autres utilisateurs ont remarqué. Instruction de cas de commutation incorrecte et plusieurs lecteurs dans le même flux. Je suggère ce qui suit. P>
Vous devez initialiser la réponse variable avant de l'utiliser. Par exemple à 0. P>
Avec cette modification de votre calculatrice doit fonctionner correctement. P> second num + = num code> signifie
num = num + num code> et ce que vous voulez accumuler l'opération Résultats dans la réponse,
Réponse = Réponse + Num code>. Qui peut être atteint avec
réponse + = num code>. P>
J'ai pris soin des scanners supplémentaires, corrigé mon erreur de modifier la variable NUM au lieu de la variable de réponse et a ajouté des pauses après chaque cas, et le programme peut fonctionner, mais les calculs semblent être tous gâchés. Lorsque je l'ai saisi 4 et divisé par 2 (essentiellement 4/2), le programme m'a donné 0,0 pour ma réponse. Une chose que j'ai remarquée, cependant, est que lorsque j'ai essayé de faire 5 + 5 + 5 + 5, la réponse a toujours été 5 de moins que la valeur qu'elle était censée donner. Par exemple, 5 + 5 + 5 + 5 = 15 au lieu de 20. Je pense que cela a quelque chose à voir avec la manière dont les valeurs sont stockées, puis utilisées?
Merci à tous ceux qui ont contribué et ont aidé à modifier mon code, j'ai réussi à obtenir ma toute première calculatrice de travail! C'est très basique et pourrait vraiment utiliser beaucoup de travail; Tant de travail, mais les bases sont très bien faites! C'est essentiellement une calculatrice de travail! Cependant, cela ne peut faire que des additions, une soustraction, une multiplication et une division. Cela ne peut pas faire beaucoup plus que cela. Si quelqu'un veut voir ce que j'ai maintenant, je posterai le lien vers le code afin que vous puissiez l'exécuter si vous le souhaitez. Encore une fois, merci à tous.
lien: https://repl.it/@angelramirez6/basic-Calculator-1Fixed p>
(comment j'ai réparé mon code - explications) strong> - D'accord, je suis donc en train de regarder mon premier code, j'ai eu des scanners inutiles que j'ai mis fin à prendre Out (acclamations à Thomas Kläger et Steven Spungin). P> Après cela, j'ai ensuite fixé comment les calculs ont été effectués. Initialement, je ne pouvais pas envelopper ma tête autour de la façon dont ils étaient censés travailler, alors je les ai donc fabriqués très maladroitement de ce même morceau de code: num + = num + = Num fort>, qui était essentiellement Après avoir fixé les calculs, je pensais que mon code fonctionnerait, mais je suis arrivé à un arrêt, car les calculs que je recevais étaient complètement aléatoires et non corrects du tout. Ou, plutôt, le programme était Faire la bonne chose à faire ce que j'avais mal codé à faire. Spécial grâce à Steven Spungin qui a tout mis en pierre et m'a aidé à comprendre que le problème menti dans la manière dont mes valeurs étaient stockées. P> Avant une boucle Au total, c'était un programme simple avec un peu une exécution délicate pour le démarrer (au moins pour moi). Je recommande ce petit projet pour tous ceux qui sont un débutant dans le codage de Java. Le programme est loin d'être terminé et je suis sûr que le code pourrait être exécuté beaucoup plus efficacement, mais je vais aller de l'avant et prendre mon char = w; Pour celui-ci. (J'ai même ajouté une erreur "Divide par zéro". Allez-y et essayez-le vous-même!) P> au cas où Le lien ne fonctionne pas, voici mon code de travail: p> importer java.util.scanner; p> scanner SC = nouveau scanner (système.in); p> double num = 0, réponse = 0;
int quoi, retenir = 1, retenue = 1; p> system.out.println ("Entrez un numéro:");
Réponse = SC.NextDouble (); p> tandis que (redevable == 1) { p>
Votre commutateur manque des relevés de pause.
Premièrement: Ne créez pas à
Scanner Code> S pour le même flux d'entrée - cela entraînera des problèmes si les utilisateurs entrent plusieurs valeurs sur la même ligne. Deuxièmement: après avoir entré l'opération, l'utilisateur a besoin d'un moyen d'entrer la deuxième valeur.