2010-12-14 1 views
0

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

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}; 
+0

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

ответ

2

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

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

0

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

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

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

0

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

public interface Oparation { 
... 

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

Сохраните эту порцию в файле «Oparation.java» и повторите попытку.

1

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

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

interface Operation { ... } 

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

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

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

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

0

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

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