2013-05-22 10 views
0

Вот мой код ниже, я выделю то, что бросает ошибку, я полностью потерял о том, как это исправить ...Как добавить входные данные из текстового поля

import java.awt.*; 
import java.awt.event.*; 
import java.applet.*; 
import java.awt.event.ActionListener.*; 
import java.awt.event.TextListener.*; 
public abstract class GradeAverage extends Applet 
implements ActionListener, TextListener{ 
Button Ok=new Button("Ok"); 
Button Cancel=new Button("cancel"); 
TextField Math=new TextField("Math Grade",2); 
TextField Science=new TextField("Scien Grade",2); 
TextField SocialStudies=new TextField("Social Studies Grade",2); 
TextField English=new TextField("English Grade",2); 
TextField Elective=new TextField("Elective Grade",2); 
TextField Elective2=new TextField("2nd Elective Grade",2); 
TextArea message=new TextArea(); 
public void init(){ 
GridBagLayout gbl=new GridBagLayout(); 
setLayout(gbl); 
GridBagConstraints c=new GridBagConstraints(); 
c.anchor=GridBagConstraints.WEST; 
c.weightx=2.0; 
c.weighty=2.0; 
c.fill=GridBagConstraints.HORIZONTAL; 
c.insets=new Insets(10,10,10,10); 
gbl.setConstraints(Math,c); add(Math); 
c.fill=GridBagConstraints.NONE; 
gbl.setConstraints(Science,c); add(Science); 
c.fill=GridBagConstraints.HORIZONTAL; 
gbl.setConstraints(SocialStudies,c); add(SocialStudies); 
c.gridy=1; 
gbl.setConstraints(English,c); add(English); 
c.gridy=2; 
gbl.setConstraints(Elective,c); add(Elective); 
c.fill=GridBagConstraints.NONE; 
gbl.setConstraints(Elective2,c); add(Elective2); 
c.gridy=3; 
c.anchor=GridBagConstraints.CENTER; 
gbl.setConstraints(Ok,c); add(Ok); 
gbl.setConstraints(Cancel,c); add(Cancel); 
c.gridy=4; 
c.gridwidth=3; 
c.fill=GridBagConstraints.BOTH; 
gbl.setConstraints(message,c); add(message); 
Math.addTextListener(this); 
Science.addTextListener(this); 
SocialStudies.addTextListener(this); 
English.addTextListener(this); 
Elective.addTextListener(this); 
Elective2.addTextListener(this); 
Ok.addActionListener(this); 
Cancel.addActionListener(this); 
} 
public void actionPerformed(ActionEvent event){ 
Object Source=event.getSource(); 
if(Source==Ok){ 
Math.getText(); 
Science.getText(); 
SocialStudies.getText(); 
English.getText(); 
Elective.getText(); 
Elective2.getText(); 
do{ 
**message=(Math+Science+SocialStudies+English+Elective+Elective2)/6;** 
system.println("Your grade average is"+message); 
}while (message<0); 
if(Source==Cancel){ 
system.ext(0); 
} 
}}} 

код бросает ошибку обозначается ** Указанная погрешность: плохие типы операндов для двоичного оператора '+'

Пожалуйста, помогите!

Благодаря

ответ

2

Вы не можете добавить TextFields вместе, а Java не поддерживает перегрузку. Чтобы получить значение, вы должны сначала позвонить getText() по каждому TextField, а затем передать его Double.parseDouble, чтобы преобразовать его в число, которое может добавить Java.

Вы должны иметь что-то вроде этого:

double gpa = (Double.parseDouble(Math.getText()) + 
       ... 
       Double.parseDouble(Elective2.getText()) 
      )/6; 

Вам нужно поймать NumberFormatException если TextField содержит текст, который не может быть преобразован в число.

Затем вам нужно будет преобразовать GPA в текст для TextArea, который вы назвали message.

message.setText(String.valueOf(gpa)); 
+0

Большое спасибо! Это работало, больше никаких ошибок в моей программе, я продолжал пробовать вещи за несколько часов до того, как я разместил здесь LOL. Спасибо!! – SpHrr

0

Похоже, что вы пытаетесь добавить строковые переменные вместе - Попробуйте преобразовать их в целое число значений первого. что-то вроде

message=(Integer.parseInt(Math)+Integer.parseInt(Science)+Integer.parseInt(English)... 

Вот ссылка на другой поток на этой самую тему: How to convert a String to an int in Java?

Надеется, что это помогает!

+0

'Math',' Science' и т. Д. Являются 'TextFields', а не' Strings'. – rgettman

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