2009-12-15 7 views
1

Je fais un programme qui a deux questions différentes, ohm et ampère pour être exact.While loop/java

Je sais comment faire fonctionner ce travail mais le problème est qu'à la fin une autre question devrait apparaître demandant "vous voulez faire un nouveau calcul?" cette question devrait fonctionner comme si j'appuie sur "Y" le programme devrait continuer depuis le début et si j'appuie sur "N" le programme devrait sortir.

J'espère que n'importe qui a eu quelques idées qui pourraient m'aider à finir ceci. Et le programme doit être dans le format JOptionpane.dialog/message.

// delajz

ce que je suis arrivé atm.

//Declaring Variables 

Ampere = Integer.parseInt(FragaAm); 
Ohm = Integer.parseInt(FragaOhm); 

//koden 
do 
{ 
    FragaAm =JOptionPane.showInputDialog("Hur många Ampere? "); 
    FragaOhm = JOptionPane.showInputDialog("hur hög resistans? "); 
    svar = Ohm*Ampere; //calculate 
    slutsvar = svar + "Volt"; //answer 
    JOptionPane.showMessageDialog(null,slutsvar);  

    borjaom =JOptionPane.showInputDialog("Igen? J eller N "); // the question which ask for new calc 
} while (borjaom == "j" ||borjaom == "J"); 
+1

Si vous pouviez ajouter une partie de votre code, cela pourrait nous aider à déterminer exactement ce dont vous avez besoin. Assurez-vous de mettre en retrait les lignes de code de 4 espaces lorsque vous le publiez afin qu'il soit correctement formaté sur SO. –

+0

Avez-vous un embryon du code ou voulez-vous quelqu'un d'autre écrire le code pour vous? – Tomas

+0

Est-ce que ce sont les devoirs? Et êtes-vous sûr d'utiliser JavaScript, pas Java Swing? – Pops

Répondre

3

Vous pouvez commencer par regarder l'article Sun How to Make Dialogs.
Il mentionne un JOptionPane configuré comme celui que vous cherchez à faire:

alt text http://java.sun.com/docs/books/tutorial/figures/uiswing/components/JOptionPaneMetal.png

final JOptionPane optionPane = new JOptionPane(
    "The only way to close this dialog is by\n" 
    + "pressing one of the following buttons.\n" 
    + "Do you understand?", 
    JOptionPane.QUESTION_MESSAGE, 
    JOptionPane.YES_NO_OPTION); 
+0

Le problème appelle pour appuyer sur "Y" ou "N" pas un bouton étiqueté Oui ou n ° – Brandon

+0

Oui Brandon, depuis le début qui était mon problème. mais c'était juste une façon d'expliquer que j'avais besoin de quelque chose pour appeler un redémarrage du programme ou une sortie. cela fonctionne tout aussi bien – Fredrik

2

Essayez ceci:

borjaom =JOptionPane.showInputDialog(null, "Igen? J eller N "); 

En outre, JOptionPanene peut être utilisé pour entrer des chaînes . Toutes les variables que vous avez définies pour recevoir l'entrée de JOptionPane doivent donc être déclarées en tant que chaînes. Ampères et Ohm doit être déclarée comme des entiers en FragaAm, FragaOhm et borjaom doit être déclarée en tant que chaînes.

+1

Bonne remarque. +1 – VonC

0

Comme alternative à ce que VonC dit, en format JOptionPane.dialog/message:

//Declaring Variables 
int borjaom = JOptionPane.NO_OPTION; 

// omitted other code, but it should still be here 

    // Note that borjaom is an int now 
    borjaom = JOptionPane.showConfirmDialog(null, "Igen?", "Title goes here", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); // the question which ask for new calc 

    } while (borjaom == JOptionPane.YES_OPTION); 

borjaom sera réglé sur l'un des JOptionPane.NO_OPTION ou JOptionPane.YES_OPTION.

Oh, et si vous voulez une boîte de dialogue, moins le titre (ou avec le titre par défaut), modifiez "Title goes here" à null

+0

fonctionnant comme prévu, oui j'ai changé le titre;) – Fredrik

2

Votre while condition:

} while (borjaom == "j" ||borjaom == "J"); 

suppose des chaînes peuvent être comparés sur la base de l'objet , alors que cela est vrai dans le cas où les chaînes sont internées, il est préférable de passer à un entier enum qui représente le résultat Oui/Non ou utiliser les méthodes égales de String comme:

} while ("J".equalsIgnorecase(borjaom)); 

(en utilisant ce format au lieu de borjaom.equalsIgnorecase("J") a l'avantage qu'il gère la situation où borjoam == null correctement.)

0

Cette partie ne fonctionnera pas correctement:

Ampere = Integer.parseInt(FragaAm); 
    Ohm = Integer.parseInt(FragaOhm); 

    do 
    { 
     FragaAm =JOptionPane.showInputDialog("Hur många Ampere? "); 
     FragaOhm = JOptionPane.showInputDialog("hur hög resistans? "); 

Vous transformez FragaAm à un nombre entier avant la lecture il.
vous devez d'abord lire puis convertir:

do 
    { 
     FragaAm =JOptionPane.showInputDialog("Hur många Ampere? "); 
     Ampere = Integer.parseInt(FragaAm); 
     FragaOhm = JOptionPane.showInputDialog("hur hög resistans? "); 
     Ohm = Integer.parseInt(FragaOhm); 

et s'il vous plaît jeter un oeil à la Code Conventions for the Java Programming Language,
dans votre cas: les variables commence par les minuscules (seule convention, mais utilisé dans le monde entier)