我是Java的新手并遇到一些问题,对不起,如果这是一个明显的或经常回答的问题,但我已经看过其他10个这类错误并且无法弄清楚我的问题。 我在主要标记的行上遇到错误,说构造函数是未定义的。任何帮助表示赞赏。
public class ValueChanger {
private static int myInt1;
private static int myInt2;
private static int myInt3;
private static int myIntSum;
public static void main(String[] args)
{
ValueChanger constructor = new ValueChanger(); //error here
ValueChanger changeValues = new ValueChanger(); //and here
changeValues.changingValues(myInt1, myInt2, myInt3, myIntSum);
}
public ValueChanger(int myInt1, int myInt2, int myInt3, int myIntSum)
{
myInt1 = 1;
myInt2 = 2;
myInt3 = 3;
myIntSum = myInt1 + myInt2 + myInt3;
}
public int changingValues(int myInt1, int myInt2, int myInt3, int myIntSum)
{
myInt1 = myInt2;
myInt2 = myInt3;
myInt3 = myInt1;
myIntSum = myInt1 + myInt2 + myInt3;
return myIntSum;
}
}
答案 0 :(得分:1)
当您显式实现构造函数时,默认构造函数将被删除。 因此,您的构造函数需要四个args,但是当您创建实例时,您无法提供任何参数:
ValueChanger changeValues = new ValueChanger();
您需要为此实现重载构造函数。
作为一个例子:
public ValueChanger()
{
myInt1 = 0;
myInt2 = 0;
myInt3 = 0;
myIntSum = myInt1 + myInt2 + myInt3;
}
现在您可以将对象实例化为:
ValueChanger changeValues = new ValueChanger();
或者,如果没有实现默认构造函数,则可以在实例化对象时传递值。
像:
ValueChanger constructor = new ValueChanger(3, 4, 4, 11); //add args
ValueChanger changeValues = new ValueChanger(4, 5, 6, 15);
答案 1 :(得分:1)
仔细阅读:
示例:认为学生对象必须与之关联。为实现此目的,请定义单个参数构造函数,不要定义无参数构造函数。
您的错误解决方案:添加默认构造函数 -
public ValueChanger()
{
}
有关详细信息,请参阅here
答案 2 :(得分:0)
由于您已经定义了自己的构造函数,因此无法使用默认构造函数(没有任何参数的构造函数)。
您可能还想添加默认构造函数:
public ValueChanger(){
}
或使用ValueChanger valueChanger = new ValueChanger(1,2,3,4);
答案 3 :(得分:-1)
将此添加到您的班级:
public ValueChanger()
{
}