1

まず、これは宿題の質問ではありません。私はJavaの知識を実践しています。これを行う良い方法は、助けを借りずに簡単なプログラムを書くことだと思いました。残念ながら、私のコンパイラは、修正方法がわからないエラーを教えてくれます。多くのロジックとコードを変更せずに、誰かが私のエラーの場所を親切に指摘できますか? ありがとう

import java.lang.*;
import java.util.*;

public class Calculator
{
    private int solution;
    private int x;
    private int y;
    private char operators;

    public Calculator()
    {
        solution = 0;
        Scanner operators = new Scanner(System.in);
        Scanner operands = new Scanner(System.in);
    }

    public int addition(int x, int y)
    {
       return x + y;
    }
    public int subtraction(int x, int y)
    {
       return x - y;
    }
    public int multiplication(int x, int y)
    {    
       return x * y;
    }
    public int division(int x, int y)
    {
       solution = x / y;
       return solution;
    }
    public void main (String[] args)
    {
      System.out.println("What operation? ('+', '-', '*', '/')"); 

      System.out.println("Insert 2 numbers to be subtracted");
       System.out.println("operand 1: ");
       x = operands;
       System.out.println("operand 2: ");
       y = operands.next();
      switch(operators)
      {
          case('+'):
            addition(operands);
            operands.next();
            break;
          case('-'):
            subtraction(operands);
            operands.next();
            break;
          case('*'):
            multiplication(operands);
            operands.next();
            break;
          case('/'):
            division(operands);
            operands.next();
            break;
       }
  }
}
4

10 に答える 10

4
package org.com;

import java.lang.*; 
import java.util.*; 

public class Calculator 
{ 
    private int solution; 
    private static int x; 
    private static int y; 
    private char operators; 

    public Calculator() 
    { 
        solution = 0; 
        Scanner operators = new Scanner(System.in); 
        Scanner operands = new Scanner(System.in); 
    } 

    public int addition(int x, int y) 
    { 
       return x + y; 
    } 
    public int subtraction(int x, int y) 
    { 
       return x - y; 
    } 
    public int multiplication(int x, int y) 
    {     
       return x * y; 
    } 
    public int division(int x, int y) 
    { 
       solution = x / y; 
       return solution; 
    } 

    public void calc(int ops){
         x = 4; 
         System.out.println("operand 2: "); 
         y = 5; 

         switch(ops) 
         { 
             case(1): 
               System.out.println(addition(x, y)); 

           //    operands.next(); 
               break; 
             case(2): 
                 System.out.println(subtraction(x, y)); 
              // operands.next(); 
               break; 
             case(3): 
                 System.out.println(multiplication(x, y)); 
             //  operands.next(); 
               break; 
             case(4): 
                 System.out.println(division(x, y));
             //  operands.next(); 
               break; 
          } 
    }
    public static void main (String[] args) 
    { 
      System.out.println("What operation? ('+', '-', '*', '/')");  
      System.out.println(" Enter 1 for Addition");
      System.out.println(" Enter 2 for Subtraction");
      System.out.println(" Enter 3 for Multiplication");
      System.out.println(" Enter 4 for Division");

       Calculator calc = new Calculator();
       calc.calc(1);


  } 
} 

これはうまくいくでしょう

于 2010-04-29T08:05:48.203 に答える
4

operandsメインのoperators範囲外です。コンストラクターでローカル変数を宣言するため、ctor を終了すると、それらは GC の対象となり、なくなります。

コンパイル エラーが 10 個あります。

于 2010-04-29T01:31:57.067 に答える
2
package com.abc;

import java.util.Scanner;

public class Calculator {
    private static final String pos = "+";
    private static final String neg = "-";
    private static final String mult = "*";
    private static final String div = "/";

    private enum operation {
        pos, neg, mult, div
    };
    private int solution;
    private int x;
    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    private int y;



    static Scanner operators;

    public Calculator() {
        solution = 0;
        operators = new Scanner(System.in);

    }

    public int addition(int x, int y) {
        return x + y;
    }

    public int subtraction(int x, int y) {
        return x - y;
    }

    public int multiplication(int x, int y) {
        return x * y;
    }

    public int division(int x, int y) {
        solution = x / y;
        return solution;
    }

    public static void main(String[] args) {
        Calculator calc = new Calculator();

        System.out.println("Insert 2 numbers");

        System.out.println("operand 1: ");

        calc.setX(Integer.parseInt(operators.next()));

        System.out.println("operand 2: ");
        calc.setY(Integer.parseInt(operators.next()));

        System.out.println("What operation? ('pos', 'neg', 'mult', 'div')");
        operation ttt = operation.valueOf(operators.next());
        int output = 0 ;
        switch(ttt){
        case pos:
            output = calc.addition(calc.getX(), calc.getY());

            break;
          case neg:
              output = calc.subtraction(calc.getX(), calc.getY());

            break;
          case mult:
              output = calc.multiplication(calc.getX(), calc.getY());

            break;
          case div:
              output = calc.division(calc.getX(), calc.getY());

            break;
        }
        System.out.println("output ="+output);
    }
}
于 2010-04-29T10:35:34.493 に答える
2

別の問題は、行です

y = operands.next();

Stringから返された aを、型として宣言されてScanner.next()いる a 変数に配置しようとしています。yint

このScanner.nextInt()メソッドを使用して、 を返そうとすることができますint

于 2010-04-29T01:32:49.437 に答える
1

これはすべて素晴らしいですが、Javaを作成するためにどのプログラムを使用していますか?エラーを自動的に検出し、インポートを追加できるため、EclipseなどのIDEの使用を検討する必要があります。(あなたがこれを行うかどうかはわかりません)また、あなたのプログラムの問題が「英語で」何であるかを教えてくれます。また、このクラスは、電卓を実行するためのより簡単で複雑でない方法であると考えてください。

public class Calculator {
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter an Operator: ");
    String in = sc.next();
    char oper = in.charAt(0);

    System.out.print("Enter a number: ");
    in = sc.next();
    double num1 = Double.parseDouble(in);

    System.out.print("Enter another number: ");
    in = sc.next();
    double num2 = Double.parseDouble(in);

    if(oper == '+') {
        double result = num1 + num2;
        System.out.println(result);
    } else if(oper == '-') {
        double result = num1 - num2;
        System.out.println(result);
    } else if(oper == 'x') {
        double result = num1 * num2;
        System.out.println(result);
    } else if(oper == '/') {
        double result = num1 / num2;
        System.out.println(result);
    } else {
        double result = num1 % num2;
        System.out.println(result);
    }
        System.out.println("Hope this helped your mathmatical troubles!");
}

}
そして習慣の問題として、行う代わりに:

import java.util.*;

次のことを行うことをお勧めします。

import java.util.Scanner;

これはおそらくここではあまり違いはありませんが、はるかに大きなプログラムを実行している場合、java.util全体をインポートするとプログラムの速度が大幅に低下します。

お役に立てれば!

于 2012-12-23T00:16:17.193 に答える
1

他の回答に加えて、 main() メソッドは、プログラムのエントリ ポイントになるために静的である必要があります。main() では、独自の Calculator オブジェクトを構築し、その上でメソッドを呼び出す必要があります。

于 2010-04-29T01:35:48.223 に答える
0

メイン メソッドは次のように宣言する必要があります。

public static void main(String[] args) {..}

さらに、すべての算術メソッド (加算、減算など) に引数を 1 つしか指定していないようですが、2 つ必要です。

public int addition(int x, int y);

を で呼び出すことはできませんaddition(operands)。これは 1 つの引数のみであり、引数の型が正しくありません (メソッドには 2 つの が必要で、 を指定intしますScanner)。これらすべての方法についても同じことが言えます。intからを抽出する必要がありScannerます。でそれを行うことができますScanner.nextInt()

于 2010-04-29T01:32:43.837 に答える
-1

ユーザーに整数を入力するように求めていますが、ステートメントoperands.next();を入力として入れています。変数とユーザー入力との一貫性を保つようにしてください。変更するoperands.nextInt()と役立ちます。

于 2015-09-30T21:44:32.673 に答える
-1
import java.lang.*;

import java.util.*;


public class Calculator
{
    private int solution;
    private int x;
    private int y;
 private char operators;

    public Calculator()
    {
        solution = 0;
        Scanner operators = new Scanner(System.in);
        Scanner operands = new Scanner(System.in);
    }

    public int addition(int x, int y)
    {
       return x + y;
    }
    public int subtraction(int x, int y)
    {
       return x - y;
    }
    public int multiplication(int x, int y)
    {    
       return x * y;
    }
    public int division(int x, int y)
    {
       solution = x / y;
       return solution;
    }
    public void main (String[] args)
    {
      System.out.println("What operation? ('+', '-', '*', '/')"); 

      System.out.println("Insert 2 numbers to be subtracted");
       System.out.println("operand 1: ");
       x = operands;
       System.out.println("operand 2: ");
       y = operands.next();
      switch(operators)
      {
          case('+'):
            addition(operands);
            operands.next();
            break;
          case('-'):
            subtraction(operands);
            operands.next();
            break;
          case('*'):
            multiplication(operands);
            operands.next();
            break;
          case('/'):
            division(operands);
            operands.next();
            break;
       }
  }
}
于 2013-06-01T14:10:28.970 に答える
-2

ヒントとして、投げ始めるのは一般的には良い考えではありません

import java.util.*;
プログラムが不必要に大きく遅くなるためです。これに必要なのは、
java.util.Scanner をインポートします。
私が正しければ、java.lang のすべてではないにしても、ほとんどがすでにインポートされています。

于 2010-04-29T06:39:09.930 に答える