import java.awt.*;import java.util.*;
import java.applet.Applet;
public class Applet5 extends Applet {
       Label prompt1,prompt2;
       TextField input1, input2;
       int num1,num2;
       Vector v;
       float f, sumf, endf;
       public void init(){
              prompt1 = new Label("里程");
              input1 = new TextField(10);
              prompt2 = new Label("加仑"); 
              input2 = new TextField(10);
            
              add(prompt1);
              add(input1);
               add(prompt2);
              add(input2);
                           }
            public void paint(Graphics g){
           float f = num1/num2;
           v.add(f);
           for(int i = 0;i<v.size();i++){
                   sumf = (new Float(v.get(i).toString())).floatValue() + sumf; 
                    endf = sumf/(v.size());}
                   g.drawString((new Float(endf)).toString(), 60, 60);
                           
 
          }
         public boolean action(Event event, Object o){
                if(event.target==input2){
                    num1 = Integer.parseInt(input1.getText());
                    num2 = Integer.parseInt(input2.getText());                                       repaint();
                    }
                return true;
          }
}
       一个简单的程序,接受2个数字一个是公里数,一个是耗油量,程序计算出每一加仑能走多少公里,然后把数字存如向量,最后打印出平均值

解决方案 »

  1.   

    public void paint(Graphics g){
      float f = num1/num2;
    改成
    public void paint(Graphics g){
      float f =(float) num1/num2;因为num1和 num2都是整数,两个整数相除取的是整数商,如
    5/2的结果是2,而不是2.5,因为5,2都是整数
    而5.0/2的结果是2.5,因为5.0是double,所以结果是double型的
      

  2.   

    毛病可不止1L说的这一个,算了,不一一说了,贴改后的代码public class Applet5 extends Applet {
    Label prompt1, prompt2;
    TextField input1, input2;
    float num1, num2;
    Vector v = new Vector();
    float f, sumf, endf; public void init() {
    prompt1 = new Label("里程");
    input1 = new TextField(10);
    prompt2 = new Label("加仑");
    input2 = new TextField(10); add(prompt1);
    add(input1);
    add(prompt2);
    add(input2);
    } public void paint(Graphics g) {
    sumf = 0;
    for (int i = 0; i < v.size(); i++) {
    sumf = (Float)v.get(i) + sumf;
    }
    if (v.size()>0) endf = sumf / v.size();
    g.drawString((new Float(endf)).toString(), 60, 60); } public boolean action(Event event, Object o) {
    if (event.target == input2) {
    num1 = Integer.parseInt(input1.getText());
    num2 = Integer.parseInt(input2.getText());
    float f = num1 / num2;
    v.add(f); repaint();
    }
    return true;
    }
    }