2017-06-25 15 views
-3

Javaの初めて。エラーを理解しないでください。基本的に値を返して出力を調べようとしていますが、クラス「bosscalc」の「静的でないフィールドへの静的な参照を行13に表示できません。演算子クラスからの戻り値。助けてください。私はクラスbosscalcに13行目を示しました。おかげクラスメソッドの静的参照エラーjava

package calculator; 

import java.util.Scanner; 

public class bosscalc { 

    Scanner input = new Scanner(System.in); 

    public static void main(String args[]) { 
     operators operatorobjects=new operators(); 
     String answer; 

     System.out.println("What would you like to do? "); 
     answer =input.nextLine(); -------------------------LINE 13 

     if (answer=="a"){ 

      double adding = operatorobjects.add();   
      } 

     if (answer=="s") { 
      double subtrat = operatorobjects.sub(); 
     } 


     if (answer=="m") { 
      double multiply = operatorobjects.sub();   
     } 
    } 

} 

クラス事業者:エラーメッセージとして

package calculator; 

import java.util.Scanner; 

public class operators { 

    double add() { 
     double n1,n2,a; 
     Scanner input=new Scanner(System.in); 
     System.out.print("Enter number 1 "); 
     n1=input.nextDouble();  

     System.out.print("Enter number 2 "); 
     n2=input.nextDouble();; 

     a=n1+ n2; 
     return a; 
    } 

    double sub() { 
     double n1,n2,d; 
     Scanner input=new Scanner(System.in); 
     System.out.print("Enter number 1 "); 
     n1=input.nextDouble();  

     System.out.print("Enter number 2 "); 
     n2=input.nextDouble();; 

     d=n1 - n2; 
     return d; 
    } 

    double m() { 
     double n1,n2,m; 
     Scanner input=new Scanner(System.in); 
     System.out.print("Enter number 1 "); 
     n1=input.nextDouble();  

     System.out.print("Enter number 2 "); 
     n2=input.nextDouble();; 

     m=n1/n2; 
     return m; 
    } 

} 
+2

ようこそスタックオーバーフロー!デバッグの助けを求める質問( "なぜこのコードは動作しないのですか?")には、目的の動作、_a特定の問題またはerror_を含める必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve) –

+0

宣言時に 'static Sc​​anner input'を使うか、' main() 'の中でメソッドレベルの変数としてスキャナを宣言するのがよいでしょう。ところで、私はあなたに他の問題があると思うでしょう。 –

答えて

0

は言う:静的コンテキスト(あなたの静的なmain関数)からは、非静的変数(入力)を参照することはできません。 入力を静的に修正することで修正できます。 e。

static Scanner input = new Scanner(System.in); 
+0

'if(answer ==" a ")' ...コードにエラーがあふれているので、私はこの質問に答えません。 –

+0

人々はどこかに出発する必要があります。最初のJavaプログラムを覚えていますか? :) – chocksaway

+0

ありがとうございました。コードがあなたの専門知識の下にあることを、Timにお詫び申し上げます。私が言ったように私はこれに新しいです。 – Bobs

0

私はあなたのコードを変更(リファクタリング)しました。簡単なエラーがいくつかありました。私はすべてを一つのクラスに移し、いくつかのコメントを追加しました。

改善がたくさんあります。私は除算方式を追加し、乗算する名前を変更した

import java.util.Scanner; 

public class Operators { 
    /** 
    * add numbers 
    * @return n1 + n2 
    */ 
    double add() { 
     double n1, n2, a; 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter number 1 "); 
     n1 = input.nextDouble(); 

     System.out.print("Enter number 2 "); 
     n2 = input.nextDouble(); 
     a = n1 + n2; 
     return a; 
    } 

    /** 
    * subtract numbers 
    * @return n1 - n2 
    */ 
    double sub() { 
     double n1, n2, d; 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter number 1 "); 
     n1 = input.nextDouble(); 

     System.out.print("Enter number 2 "); 
     n2 = input.nextDouble(); 

     d = n1 - n2; 
     return d; 
    } 

    /** 
    * multiply numbers 
    * @return n1 * n2 
    */ 
    double multiply() { 
     double n1, n2, m; 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter number 1 "); 
     n1 = input.nextDouble(); 

     System.out.print("Enter number 2 "); 
     n2 = input.nextDouble(); 

     m = n1 * n2; 
     return m; 
    } 

    /** 
    * divide numbers 
    * @return n1/n2 
    */ 
    double divide() { 
     double n1, n2, m; 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter number 1 "); 
     n1 = input.nextDouble(); 

     System.out.print("Enter number 2 "); 
     n2 = input.nextDouble(); 

     m = n1/n2; 
     return m; 
    } 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     Operators operatorobjects = new Operators(); 
     String answer; 

     System.out.println("What would you like to do? "); 
     answer = input.nextLine(); 

     /** 
     * String equality use String.equals() 
     */ 
     if (answer.equals("a")) { 

      double adding = operatorobjects.add(); 
      /** 
      * Debug output println 
      */ 
      System.out.println("adding = " + adding); 

     } else if (answer.equals("s")) { 

      double subtract = operatorobjects.sub(); 
      System.out.println("subtract = " + subtract); 

     } else if (answer.equals("m")) { 

      double multiply = operatorobjects.multiply(); 
      System.out.println("multiply = " + multiply); 

     } else if (answer.equals("d")) { 

      double divide = operatorobjects.divide(); 
      System.out.println("divide = " + divide); 

     } 
     /** 
     * More debug exiting 
     */ 
     System.out.println("exiting"); 
    } 
} 

:しかし、これは練習と経験するすべてダウンしています。実行時の出力は次のとおりです。

What would you like to do? 
a 
Enter number 1 10 
Enter number 2 10 
adding = 20.0 
exiting 


What would you like to do? 
s 
Enter number 1 10 
Enter number 2 2 
subtract = 8.0 
exiting 

What would you like to do? 
m 
Enter number 1 2 
Enter number 2 5 
multiply = 10.0 
exiting 

What would you like to do? 
d 
Enter number 1 6 
Enter number 2 3 
divide = 2.0 
exiting 
関連する問題