Java代码上的错误消息,使我生成2个计算器对象并对其执行操作
以下是主Java文件: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");
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);
}