J'essaie de faire cette "calculatrice globale de qualité" en utilisant javax.swing. *; que j'ai récemment appris. Cependant, je ne trouve pas ce qui ne va pas avec mon code. Mon IDE, qui est Ecliple, ne détecte aucune erreur sur mes codes, mais elle ne fonctionnera pas lorsque j'essaie d'exécuter mes codes. Où est-ce que j'ai gâché?
BTW: C'est de loin mes dernières connaissances sur la codage Java parce que je suis autodidacte, donc je ne connais peut-être pas de codes qui sont plus avancés que ceux-ci sont plus avancés. P>
Exception in thread "main" java.lang.NumberFormatException: empty String at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) at sun.misc.FloatingDecimal.parseDouble(Unknown Source) at java.lang.Double.parseDouble(Unknown Source) at gradeCalcMk3.main(gradeCalcMk3.java:32)
3 Réponses :
NVM, j'ai trouvé où je me suis foiré et résolu en faisant cela:
if(confirm == JOptionPane.OK_OPTION) { grade[0] = Double.parseDouble(q.getText()); grade[1] = Double.parseDouble(ex.getText()); grade[2] = Double.parseDouble(cs.getText()); grade[3] = Double.parseDouble(ilm.getText()); grade[4] = average(grade[0], grade[1], grade[2], grade[3]); JOptionPane.showMessageDialog(null, "Name: " + name.getText() + "\n\nQuiz: " + grade[0] + "\n\nExam: " + grade[1] + "\n\nCS: " + grade[2] + "\n\nILM: " + grade[3] + "Average: " + grade[4]); }
Bien que cette approche puisse fonctionner, vous voudrez peut-être envisager le modèle de conception d'ajouter des boutons et des champs de texte à un jframe. Bien que vous puissiez faire des choses soignées avec optionPanes, la vraie flexibilité vient lorsque vous créez un jframe et d'ajouter des contrôles. Votre application est motivée par la réponse aux clics d'utilisateur (et d'autres activités) dans les commandes. La grande différence est que les anciennes (bouffées d'options) sont généralement modales (c'est-à-dire que vous devez y répondre avant de pouvoir faire quelque chose d'autre et sans danger (une application d'interface graphique typique). Constituée Il y a un mode sans ménage pour les vitres d'options, mais ils sont destinés à Dialogs de style "Recherche".
Vous aurez besoin d'un peu plus pour faire ce travail. P>
Fondamentalement, tout le code qui extrait les valeurs du champ de texte doit être placé dans une méthode déclenchée lorsque vous cliquez sur un bouton ou un menu (ou quelque chose d'autre pour l'activer). C'est-à-dire que vous avez besoin d'au moins deux méthodes, une méthode de "formulaire de configuration" et une méthode "processus". p>
Comme indiqué, vos jtextfields ne contiennent aucun texte (le constructeur que vous utilisez ne définit pas le texte - il définit le "nombre de colonnes"). P>
Une fois que tous les champs de texte ont été créés et ajoutés au formulaire, la prochaine étape suivante consiste à extraire les cordes vides d'eux et tenter de les analyser en double. Cela générera l'exception que vous avez rencontrée.
Étant donné que le code est contenu dans une seule méthode, il y a zéro em> chance de vous permettre de saisir les valeurs dans les champs avant leur lecture et traitées. P>
Au moins, commenter (pour l'instant) le code qui tente d'extraire des valeurs, de les analyser et de calculer la moyenne. Cet extrait, analyser et calculer le code peut ensuite être déplacé dans le gestionnaire d'événements attaché à un bouton ou au menu que j'ai mentionné ci-dessus. P>
J'espère que cela vous aidera. P>
Vous utilisez simplement le mauvais constructeur lors de la création d'instances de jtextfield (int colonnes )
Construit un nouveau champ de texte vide avec le nombre spécifié de colonnes. P>
au lieu de fournir un int, utilisez une chaîne, par exemple Jtextfield (texte String)
Construit un nouveau champ de texte initialisé avec le texte spécifié. P> jtextfield code> p>
nouveau jtextfield ("10") code> p>
L'un de vos champs de texte est vide et la chaîne vide ne peut pas être analysée dans un double.
ne devrait pas
double grade [] code> être
{0.0d, 0.0d, 0.0d, 0,0d, 0.0d} code>?
Stackoverflow.com/ Questions / 5499523 / ...
J'espérais que la fenêtre apparaîtrait et je pourrais entrer mes valeurs de nom et de grade. Ensuite, mes valeurs de grade (qui seront dans les chaînes) seraient converties en double valeurs. Comment je fais ça? Pour que cela ne dirait pas que les valeurs sont vides.
@Shreyas pas nécessairement. Le casting est automatique. En outre, D n'est jamais nécessaire. C'est par défaut double. c'est pour flotter que vous devez suffixer avec f.
Tout en commençant à apprendre le codage, c'est une bonne pratique de commencer à lire et à essayer de comprendre la standingTrace. Exception, c'est-à-dire String vide i> est à la ligne 32 (grade [0] = double.Parsedouble (q.getext ());)
Double Confirm = JOPTIONSPANE.SHOWCONFIRMDIALOG CODE> Ceci ouvre une boîte de dialogue qui attendra jusqu'à la fermeture avant d'effectuer plus de relevés de code. Il devrait être fait avant i> b> tout appels vers
gettext code>.