为什么使用多个构造函数的此Java代码在VS代码中运行,但无法使用javac进行编译?

时间:2020-11-08 22:09:10

标签: java visual-studio-code constructor javac

我一直在尝试在Java中使用多个构造函数。下面是我的代码:

<body>
<div id="div1" >
Warm From:
<select id="hour_on_1">
    <option value = "0" ></option>
    <option value = "1" >1</option>
    <option value = "2" >2</option>
    <option value = "3" >3</option>
    <option value = "4" >4</option>

</select>
:
<select id="minute_on_1">
    <option value = "" ></option>
    <option value = "0" >00</option>
    <option value = "15" >15</option>
    <option value = "30" >30</option>
    <option value = "45" >45</option>
</select>

<select id="on_am_pm_1">
    <option value = "" ></option>
    <option value = "0" >am</option>
    <option value = "12" >pm</option>
</select>

&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Until:
<select id="off_hour_1">
    <option value = "" ></option>
    <option value = "1" >1</option>
    <option value = "2" >2</option>
    <option value = "3" >3</option>
    <option value = "4" >4</option>

</select>
:
<select id="off_minute_1">
    <option value = "" ></option>
    <option value = "0" >00</option>
    <option value = "15" >15</option>
    <option value = "30" >30</option>
    <option value = "45" >45</option>
</select>

<select id="off_am_pm_1">
    <option value = "" ></option>
    <option value = "0" >am</option>
    <option value = "12" >pm</option>
</select>

<br/>
</div>
<div id="div2"></div>
<button type="button" onclick="add_item()">Add Another Period</button>
</body>

它以VS Code运行,但不会使用public class MultipleConstructors { int x = 20; int y = 50; String color = "Green"; String color2 = "Yellow"; public MultipleConstructors() { } public MultipleConstructors(int numb, int numb2, String colOne, String colTwo) { x = numb; y = numb2; color = colOne; color2 = colTwo; } public MultipleConstructors(int numb3, int numb4, String colThree, String colFour) { x = numb3; y = numb4; color = colThree; color2 = colFour; } public MultipleConstructors(int numb5, int numb6, String colFive, String colSix) { x = numb5; y = numb6; color = colFive; color2 = colSix; } public static void main(String[] args) { MultipleConstructors myObjOne = new MultipleConstructors(100, 200, "Pink", "Blue"); MultipleConstructors myObjTwo = new MultipleConstructors(300, 500, "Burgandy", "Silver"); MultipleConstructors myObjThree = new MultipleConstructors(800, 1000, "Black", "White"); MultipleConstructors myObjFour = new MultipleConstructors(); System.out.println(myObjOne.x + myObjOne.y + " " + myObjOne.color + " " + myObjTwo.color2 + " " + " : SUCCESS"); System.out.println(myObjTwo.x + myObjTwo.y + " " + myObjTwo.color + " " + myObjTwo.color2 + " " + " : VICTORY"); System.out.println(myObjThree.x + myObjThree.y + " " + myObjThree.color + " " + myObjThree.color2 + " " + " : YES"); System.out.println(myObjFour.x + myObjFour.y + " " + myObjFour.color + " " + myObjFour.color2 + " " + " : YES"); } } 命令进行编译。我认为可能是父属性声明后的未定义构造函数javac

2 个答案:

答案 0 :(得分:1)

如果您收到类似以下错误消息的信息:

MultipleConstructors.java:11: error: constructor MultipleConstructors(int,int,java.lang.String,java.lang.String) is already defined in class MultipleConstructors

然后您应该使用此答案。如果您遇到ClassNotFoundException,则应该看到Ntshembo Hlongwane的回答。

这里的问题是您有多个相同的构造函数。我认为您要使用的是构造函数重载,这意味着您可以具有多个具有不同头文件的构造函数,但是三个构造函数具有相同的头文件。请参阅下面与您的构造函数内联的我的评论:

public MultipleConstructors() {
    // header has no parameters
    // fine, leaves values alone
}

public MultipleConstructors(int numb, int numb2, String colOne, String colTwo) {
    // header has parameters int, int String String
    //fine, offers you the opportunity to change those values

    x = numb;
    y = numb2;
    color = colOne;
    color2 = colTwo;
}

public MultipleConstructors(int numb3, int numb4, String colThree, String colFour) {
    // header has parameters int, int, String, String
    // Wait, that's the same as the one above!

    x = numb3;
    y = numb4; 
    color = colThree;
    color2 = colFour;
}

public MultipleConstructors(int numb5, int numb6, String colFive, String colSix) {
    // header has parameters int, int, String, String
    // Wait, that's also the same as the one above!

    x = numb5;
    y = numb6; 
    color = colFive;
    color2 = colSix;
}

实例化此对象时,给它两个整数和一个字符串,您希望调用哪个构造函数?这是逻辑错误,而不是语法错误或编译器错误,因为您的代码不明确。希望这对您有所帮助,并祝您学习顺利。 :)

答案 1 :(得分:1)

基于运行代码时发现的异常

Correct, runs in VSCode but won't compile in order to run in terminal. It throws the error "could not find or load main class " caused by "ClassNotFoundException"

原因是:

  • 让我们说您将文件命名为Test.java
  • 然后在代码中将类写为MyTest
  • 当您尝试运行代码java Test时,出现以下错误:
Error: Could not find or load main class Test
Caused by: java.lang.ClassNotFoundException: Test
  • 这是因为Java现在创建了一个MyTest.class,您必须改为运行它