2010-12-14 10 views
0

私は青いJでの問題、問題のコードは モデルクラス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.javeという名前のファイルにクラスの操作が公開されていると宣言しなければならない」さを持っているUI-モデルを使用してエラーメッセージは、実行する必要があることを正確に示しています。

クラスの操作が公開されている、あなたは、単一のJavaファイル内に複数のパブリッククラス/インタフェースを持つことができません Operation.java

0

という名前のファイルに を宣言する必要があります。パブリックキーワードを削除して、それらを同じファイルに保存する場合は、CalcModelクラス内にネストします。それ以外の場合は、独自のファイルにする必要があります。

また、インターフェイス宣言の「スペルミス」(別の操作で参照しています)のスペルが間違っています。

public interface Oparation { 
... 

この場合、各トップレベルの要素(クラスまたはインタフェース:

コードは...だけでなく、あなたが宣言している行100で

0

をかなりの数の他の問題を持っているようです)は自分のファイルに保存する必要があります(エラーメッセージのように)

"Oparation.java"ファイルにその部分を保存してから、もう一度やり直してください。

1

まず、インターフェイス定義の[操作]のスペルが間違っています。ここに入力されたものか、あなたのソースに入力されたものかわからない

第2に、パブリックインターフェイスまたはクラスは、それ自身のファイルに存在する必要があります。別の内

interface Operation { ... } 

、あるいは公共のクラス:あなたはファイルのローカルクラスを持つことができない理由はありません

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

はすることはできアクセスCalcModel.Operation

としてクラスこのエラーはあなたにすべてのことを伝えます。クラスはパブリックにすることも、独自のファイルに入れることもできません。

0

トップレベルで必要ない場合は、Operation,OperandEntryObservableStateをクラスCalcModelの子として配置できます。あなたがトップレベルでそれらを必要とするなら、あなた自身の.javaファイルにそれらを入れなければなりません。

関連する問題