gpt4 book ai didi

Java/NetBeans 无法识别主类文件之外的常量

转载 作者:行者123 更新时间:2023-12-01 17:08:02 25 4
gpt4 key购买 nike

我正在开发一个项目,并尝试做一些涉及模拟耳机的基本低级事情。该类需要三个音量常量,它们是“LOW”、“MEDIUM”和“HIGH”。类定义如下所示:

public class HeadPhone {
public
static final int LOW = 1;
static final int MEDIUM = 2;
static final int HIGH = 3;
private
int volume;
boolean pluggedIn;
String headPhoneModel;
String manufacturer;
Color headPhoneColor;

快进到我单独的测试文件,我收到错误:“C:\Users\keife\Documents\NetBeansProjects\HeadPhone\src\TestHeadPhone.java:18:错误:找不到符号 HeadPhone Apple = 新 HeadPhone(低,true,“Air Pods”, 符号:变量低 位置:TestHeadPhone 类”。实际上,我所有使用变量名“LOW”、“MEDIUM”或“HIGH”的调用都无法识别。

我做错了什么?我确信我的第二次公开声明是多余的。我的默认构造函数识别该变量。我真的很不知所措。这是我指定的构造函数、changeVolume() 方法、HeadPhones 新实例的创建以及引用的 setter 方法,只是为了提供所有相关代码。

    // Specified Constructor, in the main class HeadPhone.java
public HeadPhone (int volume, boolean pluggedIn,
String headPhoneModel, String manufacturer,
Color headPhoneColor) {
this.volume = volume;
this.pluggedIn = pluggedIn;
this.headPhoneModel = headPhoneModel;
this.manufacturer = manufacturer;
this.headPhoneColor = headPhoneColor;
}

// Setter method, explicitly directed to name like this
public void changeVolume (int volume) {
this.volume = volume;
}
// Create specified HeadPhone, in the test file's main method, TestHeadPHone.java
HeadPhone Apple = new HeadPhone (LOW, true, "Air Pods",
"Apple", Color.white);
HeadPhone Bose = new HeadPhone (HIGH, true, "Quiet Comfort II",
"Bose", Color.black);

// Change volume, called from main method in TestHeadPhone.java
SkullCandy.changeVolume(LOW);
Apple.changeVolume(MEDIUM);
Bose.changeVolume(LOW);

最佳答案

首先,您需要将 LOW、MEDIUM、HIGH 定义为 public。在 java 中,语句在分号后终止,因此在您的情况下,只有 LOW 变量是公共(public)的。您需要按如下方式定义它们:

public static final int LOW = 1;
public static final int MEDIUM = 2;
public static final int HIGH = 3;

将所有变量设为 public 并不是多余的,如果您希望所有变量都公开,则这是必需的。

现在,在您的 TestHeadPhone.java 中,您需要首先导入这些变量,以便像您想要的那样直接使用它们。

它应该像这样,具体取决于您的包名称:

import com.package.HeadPhones.LOW;
import com.package.HeadPhones.MEDIUM;
import com.package.HeadPhones.HIGH;

这将允许您通过直接使用公共(public)变量的名称而不使用类名称来使用公共(public)变量

或者

您可以在构造函数调用中使用如下所示的变量:

// Create specified HeadPhone, in the test file's main method, TestHeadPHone.java
HeadPhone Apple = new HeadPhone (HeadPhone.LOW, true, "Air Pods",
"Apple", Color.white);
HeadPhone Bose = new HeadPhone (HeadPhone.HIGH, true, "Quiet Comfort II",
"Bose", Color.black);

建议

这里的另一个建议是,如果您想使用这样的值,请考虑使用枚举。

关于Java/NetBeans 无法识别主类文件之外的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61447023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com