gpt4 book ai didi

java - 空白的最终字段 INITIAL 可能尚未初始化

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:07:12 24 4
gpt4 key购买 nike

我正在用 Java 编程。我已经为每个方法添加了注释来解释它们应该做什么(根据作业)。我已将我所知道的添加到 Password.java 的 stub (这是我在研究学校提供的 javadoc 后创建的)。我的问题不是关于几个函数,我知道 testWord 和 setWord 中有错误,但我会自己处理。我的问题是关于这一行:

public static final java.lang.String INITIAL;

这一行是由学校提供的,所以我必须假设它是正确的,我在任何地方都找不到关于常量字段值 INITIAL 的任何文档,所以如果有人能向我提供这方面的信息,那将是惊人的(例如。如何处理?它存储什么?如果有的话?类型?)。我在 Eclipse 中的这一行也遇到错误:

空白的final字段INITIAL可能还没有初始化

为什么会出现这个错误?提前感谢评论。

仅供引用来自 Password.java 的代码:

package ss.week1;

public class Password extends java.lang.Object {

// ------------------ Instance variables ----------------

/**
* The standard initial password.
*/

public static final java.lang.String INITIAL;

// ------------------ Constructor ------------------------

/**
* Constructs a Password with the initial word provided in INITIAL.
*/

public Password() {

}

/**
* Tests if a given string is an acceptable password. Not acceptable: A word
* with less than 6 characters or a word that contains a space.
*
* @param suggestion
* @return true If suggestion is acceptable
*/

// ------------------ Queries --------------------------

public boolean acceptable(java.lang.String suggestion) {
if (suggestion.length() >= 6 && !suggestion.contains(" ")) {
return true;
} else {
return false;
}
}

/**
* Tests if a given word is equal to the current password.
*
* @param test Word that should be tested
* @return true If test is equal to the current password
*/

public boolean testWord(java.lang.String test) {
if (test == INITIAL) {
return true;
} else {
return false;
}
}

/**
* Changes this password.
*
* @param oldpass The current password
* @param newpass The new password
* @return true if oldpass is equal to the current password and that newpass is an acceptable password
*/

public boolean setWord(java.lang.String oldpass, java.lang.String newpass) {
if (testWord(oldpass) && acceptable(newpass)) {
return true;
} else {
return false;
}
}
}

最佳答案

错误正是编译器所说的 - 你有一个 final 字段,但没有设置它。

final 字段需要分配给 exactly 一次。你根本没有分配给它。我们不知道该字段在文档之外的含义(“标准初始密码”)——大概有一些您应该知道的默认密码。您应该将该值分配给该字段,例如

public static final String INITIAL = "defaultpassword";

另外:你不需要写java.lang.String;只需使用短名称 (String)。在代码中使用完全限定名称很少是个好主意;只需导入您正在使用的类型,并注意 java.lang 中的所有内容都会自动导入。

另外:don't compare strings using ==; use .equals instead .

另外:任何时候你有这样的代码:

if (condition) {
return true;
} else {
return false;
}

你可以这样写:

return condition;

比如你的acceptable方法可以写成:

public boolean acceptable(String suggestion) {
return suggestion.length() >= 6 && !suggestion.contains(" ");
}

关于java - 空白的最终字段 INITIAL 可能尚未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26935453/

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