Почему я продолжаю получать сообщение об ошибке в этом коде Java? - PullRequest
0 голосов
/ 15 марта 2011

Я пишу программу, которая позволяет пользователю выбрать тип валюты, затем, когда они вводят число и нажимают кнопку «конвертировать», конвертация отображается в текстовом поле.Но я все еще получаю сообщение об ошибке в строке 36, в котором говорится: «ожидается класс или интерфейс public void init ()»

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class CurrencyConversionApplet implements ActionListener, ItemListener
{

// Variables

     double  dollars, pounds, euros, ruble, price;

     Image   dollarSign;



    Label lblTitle = new Label ("Enter the dollar amount (do not use commas or dollar signs): ");
    Label lblOutput = new Label (" ");
    TextField txtDollar = new TextField(10);
    Button convButton = new Button("Convert");

    CheckboxGroup chkGroup = new CheckboxGroup();
          Checkbox chkPounds = new Checkbox("British Pounds",false,chkGroup);
          Checkbox chkEuro = new Checkbox("Euros",false,chkGroup);
          Checkbox chkRuble = new Checkbox("Russian Ruble",false,chkGroup);
          Checkbox hiddenBox = new Checkbox("",true,chkGroup);
     Image dollarSign;
}

     public void init()

        {


      add(lblTitle);
      add(txtDollar);
      add(convButton);
      add(chkPounds);
      add(chkEuro);
      add(chkRuble);
          chkPounds.addItemListener(this);
          chkEuro.addItemListener(this);
          chkRuble.addItemListener(this);

      dollarSign=getImage(getDocumentBase(), "dollar.jpg");

      setBackground(Color.blue);
      setForeground(Color.yellow);

        convButton.addActionListener(this);

    }

          public void paint(Graphics g) {
          g.drawImage(dollarSign, 0, 28, this);

    }


 public void itemStateChanged(ItemEvent choice)
      {

             dollars = Double.parseDouble(txtDollar.getText());
             pounds = dollars * .62
             euros =  dollars * .71
             ruble = dollars * .03


     if(chkPounds.getState())
        price = pounds;

     if(chkEuro.getState())
        price = euros;

     if(chkRuble.getState())
        price = ruble;

    }

        public void actionPerformed(ActionEvent e)
                    {



lblOutput.setText(Double.toString(price));

}

Ответы [ 6 ]

4 голосов
/ 15 марта 2011

У вас есть метод init(), определенный вне класса CurrencyConversionApplet.Это то, что вы хотите?

Ошибка 'class or interface expected public void init ()' говорит само за себя: компилятор ожидает там либо класс, либо интерфейс.И init() ни один из них.

3 голосов
/ 15 марта 2011

Разве вы не должны удалить это '}'?

Image dollarSign;
}
2 голосов
/ 15 марта 2011

Поскольку метод init() должен быть частью CurrencyConversionApplet.Итак, сделайте это вместо этого -

 Image dollarSign;
 } // <-  Remove that and place it at the very end of the program.

С этим исправлением есть и другие ошибки -

 pounds = dollars * .62
 euros =  dollars * .71
 ruble = dollars * .03

Все вышеприведенные утверждения метода itemStateChanged должны заканчиваться на ;

2 голосов
/ 15 марта 2011

Вы получаете эту ошибку, потому что метод public void init() не находится внутри класса CurrencyConversionApplet.

2 голосов
/ 15 марта 2011

Если я правильно понял, у вас есть дополнительный } перед строкой объявления для Init, закрывающий объявление класса.

     Image dollarSign;
} /* <-- */

     public void init()
0 голосов
/ 15 марта 2011

Я не вижу, чтобы вы расширяли класс апплетов.Если это апплет, то вы должны расширить класс Applet

...