Java-объект, интерфейс - PullRequest
       5

Java-объект, интерфейс

0 голосов
/ 15 декабря 2010

с использованием UI-модели у меня проблема в синем J код проблемы msgstr "Операция класса общедоступна, должна быть объявлена ​​в файле с именем Operation.jave" класс модели

import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.event.*;

public class CalcModel extends Observable
{

    private JTextArea JDisplay;
 private JTextField JScreen;
     private OperandEntry eState;
    private String sScreen, sDisplay;
    private Operation operation; 
    private double dOperand1,dOperand2;


        private void ClearData(boolean bAll)
    {
        sScreen = "";
        int a= 1;
        if (bAll == true)
        {
            sDisplay = ("");
            a= 3;
            eState = OperandEntry.First;
            operation = null;            
        }
        SetUpdate(iChange);
        JScreen.setText("");

        }
    private void ProcessOpr()
    {
       dOperand2 = Double.parseDouble(sScreen);
       dOperand1 = objOpr.execute(dOperand1,dOperand2);
        sDisplay(dOperand2+ " = " + dOperand1+ " " );
        SetUpdate(x);
    }


      private Operation add = new Operation()
    {   public double execute(double d1,double d2)
        { return d1 + d2;
          SetUpdate(x);
        }
    };
     private Operation Div = new Operation()
        {                     

        public double execute(double d1,double d2)
        {  

            return d1 /d2;
           SetUpdate(x);
        }

    };
    private Operation sub = new Operation()
    {   
        public double execute(double d1,double d2)
        { return d1 -d2;
         SetUpdate(x);
        }
    };
    private Operation Multi = new Operation()
    {  
        public double execute(double d1,double d2)
        {
            return d1 * d2;
            SetUpdate(x);
        }

    };
    private Operation Mag = new Operation()
    {  
        public double execute(double d1,double d2)
         {
             if((int)d1 != d2 || (int)d1 != d1)
            {
                d1=(int)d1;
                d2=(int)d2;
                MsgInfo("Assuming Integers;" + d1 + " %" +d2);
            }

            return d1 % d2;
            SetUpdate(x);
        }

    };

    public void SetUpdate(ObservableState o)
    {
        setChanged();
        notifyObservers(o);
    }


  }
     public  interface Oparation 
    {
        public double execute(double d1,double d2);
    }

     public  enum OperandEntry{ 
         First, Second,ResultFirst
        };
     public  enum ObservableState{ Screen,Display,Both};

Ответы [ 5 ]

2 голосов
/ 15 декабря 2010

Сообщение об ошибке сообщает вам ТОЧНО, что вам нужно сделать.

Класс Операция публичная, должна быть объявлен в файле с именем Operation.java

1 голос
/ 15 декабря 2010

Прежде всего, вы ошиблись операцией в определении интерфейса. Я не знаю, если это опечатка здесь или в вашем источнике

Во-вторых, общедоступный интерфейс или класс должен быть в своем собственном файле. Нет причины, по которой у вас не может быть локального файла:

interface Operation { ... }

или даже открытый класс внутри другого:

public class CalcModel extends Observable {
    ...
    public class Operation { ... }
}

Вы можете получить доступ к классу как CalcModel.Operation

Ошибка говорит вам все это. Класс не может быть общедоступным или должен быть в своем собственном файле.

0 голосов
/ 15 декабря 2010

Если они не нужны на верхнем уровне, вы можете поместить Operation, OperandEntry и ObservableState как детей вашего класса CalcModel.Если они вам нужны на верхнем уровне, вы должны поместить их в .java собственный файл.

0 голосов
/ 15 декабря 2010

В строке 100 вы объявляете:

public interface Oparation {
...

Каждый элемент верхнего уровня (в данном случае, класс или интерфейс) должен быть сохранен в своем собственном файле (как указывает сообщение об ошибке)

Сохраните эту часть в файле «Operation.java» и попробуйте снова.

0 голосов
/ 15 декабря 2010

Вы не можете иметь несколько открытых классов / интерфейсов в одном файле Java. Удалите ключевое слово public и вложите их в класс CalcModel, если хотите сохранить их все в одном файле, в противном случае он должен быть в отдельном файле.

Кроме того, вы неправильно написали объявление интерфейса «Operation» (которое вы называете «Операция в другом месте»).

У кода, похоже, есть и немало других проблем ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...