2009-12-15 5 views
1

Я делаю программу, которая имеет два разных вопроса: ом и ампер, если быть точным.While loop/java

Я знаю, как это сделать, но проблема в том, что в конце еще один вопрос должен появиться, спрашивая: «Ну, хотите ли вы сделать новый расчет?» этот вопрос должен работать, как если бы я нажимал «Y», программа должна продолжаться с самого начала, и если я нажму «N», программа должна выйти.

Надеюсь, у кого-нибудь есть идеи, которые могут помочь мне закончить это. И программа должна быть в формате JOptionpane.dialog/message.

// delajz

это то, что я получил атм.

//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

Если вы хотите добавить код, который может помочь нам точно определить, что вам нужно. Просто убедитесь, что отступы строк кода на 4 пробела, когда вы публикуете его, чтобы он правильно отформатировался на SO. –

+0

У вас есть эмбрион кода, или вы не хотите, чтобы кто-то два написал код для вас? – Tomas

+0

Это домашнее задание? И вы уверены, что используете JavaScript, а не Java Swing? – Pops

ответ

3

Вы можете начать поиск в Sun article How to Make Dialogs.
Он упоминает JOptionPane сконфигурировано как тот, который вы ищете, чтобы сделать:

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

Проблема требует нажатия «Y» или «N», а не кнопки с надписью «Да» или «Нет». – Brandon

+0

да, с самого начала, это была моя проблема. но это был просто способ объяснить, что мне нужно что-то, чтобы вызвать перезапуск программы или выход. это работает так же хорошо – Fredrik

2

Попробуйте это:

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

Кроме того, JOptionPaneможет быть использован только для ввода строк , Таким образом, все ваши переменные, которые вы настроили на получение ввода от JOptionPane, должны быть объявлены как строки. Ампер и Ом должны быть объявлены как целые числа, а FragaAm, FragaOhm и borjaom должны быть объявлены как строки.

+1

Хорошее замечание. +1 – VonC

0

В качестве альтернативы, что сказал VonC, в формате JOptionPane.dialog/сообщение:

//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 будет установлен в одном из JOptionPane.NO_OPTION или JOptionPane.YES_OPTION.

Да, и если вы хотите диалог титульный меньше (или с названием по умолчанию), измените "Title goes here" на null

+0

работает так, как предполагалось, да, я изменил название;) – Fredrik

2

Ваше состояние в то время:

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

предполагает строки могут сравниваться на объекте основе , в то время как это верно, если строки интернированы, лучше либо переключиться на целое число перечислений, которое представляет результат «Да/Нет», либо использовать методы равных значений от String, например:

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

(используя этот формат вместо borjaom.equalsIgnorecase("J") имеет то преимущество, что он обрабатывает ситуацию, когда borjoam == null правильно.)

0

Эта часть не будет работать правильно:

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

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

конвертирование FragaAm в целое перед чтением Это.
вы должны сначала прочитать, а затем преобразовать:

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

и, пожалуйста, посмотрите на Code Conventions for the Java Programming Language,
в вашем случае: переменные начинаются с прописных (только соглашение, но используются во всем мире)

Смежные вопросы