Java代码上的错误消息,使我生成2个计算器对象并对其执行操作

Java代码上的错误消息,使我生成2个计算器对象并对其执行操作,java,object,Java,Object,以下是主Java文件: class Main { public static void main(String[] args) { Calculator One = new Calculator(100,50,"Addition"); One.calculateNums(); One.showResults(); Calculator Two = new Calculator(100,50,"Subtraction");

以下是主Java文件:

   class Main {
  public static void main(String[] args) {
   Calculator One = new Calculator(100,50,"Addition");
   One.calculateNums();
   One.showResults();
   Calculator Two = new Calculator(100,50,"Subtraction");
   Two.changeNumOne("200");
   Two.calculateNums();
   Two.showResults();

  }
}
下面是计算器java代码:

public class Calculator {
  // instance variables - first number, second number, operation
  private int firstNum;
  private int secondNum;
  private String operation;

  // static field to keep track of number of Calculator objects
  public static int Calculatorobjects = 0;
  // default constructor
  public Calculator(){
    int firstNum = 0;
    int secondNum = 0;
    operation = "Addition";
  }
  // initializing constructor
  public Calculator(int firstNum, int secondNum, int NumOperation){
    NumOne = firstNum;
    NumTwo = secondNum;
    NumOperation = operation;
  }
  // getters for all 3 instance variables
  public int one(){
    return firstNum;
  }
  public int two(){
    return secondNum;
  }
  public String three(){
    return operation;
  }
  // setters to be able to change any of the 3 instance variables after creating them
  public void changeNumOne(int NewNumOne){
    firstNum = NewNumOne;
  }
  public void changeNumOne(int NewNumTwo){
    SecondNum = NewNumTwo;
  } 
  public void changeNumOne(String NewNumOperation){
    operation = NewNumOperation;
  }
  // instance method to perform operation
  public void calculateNums(int result){
    if(operation == "Addition"){
      result = firstNum + secondNum;
    }
    if(operation == "Subtraction"){
      result = firstNum - secondNum;
    }
  }
  // instance method to display results
  public void showResults(){
    System.out.println(firstNum + " " +  operation + " " + secondNum + " = " + result);
  }
}
我收到以下错误消息:

exit status 1
Calculator.java:35: error: method changeNumOne(int) is already defined in class Calculator
  public void changeNumOne(int NewNumTwo){
              ^
Calculator.java:36: error: cannot find symbol
    SecondNum = NewNumTwo;
    ^
  symbol:   variable SecondNum
  location: class Calculator
Calculator.java:52: error: cannot find symbol
    System.out.println(firstNum + " " +  operation + " " + secondNum + " = " + result);
                                                                               ^
  symbol:   variable result
  location: class Calculator
Main.java:4: error: method calculateNums in class Calculator cannot be applied to given types;
   One.calculateNums();
      ^
  required: int
  found: no arguments
  reason: actual and formal argument lists differ in length
Main.java:8: error: method calculateNums in class Calculator cannot be applied to given types;
   Two.calculateNums();
      ^
  required: int
  found: no arguments
  reason: actual and formal argument lists differ in length
5 errors
我在试图修复它时尝试了一些随机的事情,但它们要么什么也没做,要么犯了更多的错误。我是Java的业余爱好者,所以我肯定犯了很多错误,但如果有人能指出这些错误并发送正确的代码,那就太好了。

1。)至少你需要修复:

public void changeNumOne(int NewNumOne){
    firstNum = NewNumOne;
}

// Error: Same name as above
public void changeNumOne(int NewNumTwo){
    // Error: Capital SecondName
    SecondNum = NewNumTwo;
} 
致:

2。)在这里,您希望打印
结果
,但您的类没有这样一个变量(如果函数
calculateEnums
有意义,请检查):

3。)这也会失败:

public Calculator(int firstNum, int secondNum, int NumOperation){
    NumOne = firstNum;
    NumTwo = secondNum;
    NumOperation = operation;
}
应该是:

public Calculator(int firstNum, int secondNum, string operation){
    this.firstNum = firstNum;
    this.secondNum = secondNum;
    this.operation = operation;
}
public Calculator(){
    this.firstNum = 0;
    this.secondNum = 0;
    this.operation = "Addition";
}
4。)此处不指定值:

public Calculator(){
    int firstNum = 0;
    int secondNum = 0;
    operation = "Addition";
}
应该是:

public Calculator(int firstNum, int secondNum, string operation){
    this.firstNum = firstNum;
    this.secondNum = secondNum;
    this.operation = operation;
}
public Calculator(){
    this.firstNum = 0;
    this.secondNum = 0;
    this.operation = "Addition";
}
总体:

可能还有其他错误


您需要检查所有变量的名称。它们很不一致。不过,请仔细阅读您的错误消息,并尝试将来理解它们。

有许多错误。我用
计算器
类解决了这个问题。我对有错误的代码进行了评论

class Calculator {
// instance variables - first number, second number, operation
private int firstNum;
private int secondNum;
private int result;   //I declare the result variable so I can print it
private String operation;

// static field to keep track of number of Calculator objects
public static int Calculatorobjects = 0;
// default constructor
public Calculator(){
    this.firstNum = 0;    //useless because uninitialized int are already 0
    this.secondNum = 0;     //same
    this.operation = "Addition";
}
// initializing constructor
public Calculator(int firstNum, int secondNum, String NumOperation){   //NumOperation is a String, not an int
    this.firstNum = firstNum;    //I'm setting the global variables as the local variables that you pass to the constructor
    this.secondNum = secondNum;
    this.operation = NumOperation;
}
// getters for all 3 instance variables
public int one(){
    return firstNum;
}
public int two(){
    return secondNum;
}
public String three(){
    return operation;
}
// setters to be able to change any of the 3 instance variables after creating them
public void changeNumOne(int NewNumOne){
    firstNum = NewNumOne;
}
public void changeNumTwo(int NewNumTwo){.   //changed method name
    secondNum = NewNumTwo;
}
public void changeNumOne(String NewNumOperation){
    operation = NewNumOperation;
}
// instance method to perform operation
public void calculateNums(){
    if(operation.equals("Addition")){     //equals is used to compare strings
        result = firstNum + secondNum;
    }
    if(operation.equals("Subtraction")){
        result = firstNum - secondNum;
    }
}
// instance method to display results
public void showResults(){
    System.out.println(firstNum + " " +  operation + " " + secondNum + " = " + result);
}