- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在 UVa Online Judge 上解决了一个 3*N + 1 问题 (100),但有一件事我不明白,但我猜它与 Java 有关,而不是算法本身。所以这是代码:
private static int maxCycleLength(int lo, int hi) {
maxLength = 0;
int n = 0;
int length = 0;
for (int i = lo; i <= hi; i++) {
// It's the first time we're computing the cycle length for n
if (lengths[i] == 0) {
n = i;
length = 1;
while (n != 1) {
if ((n % 2) == 0) {
n = n >> 1;
length++;
}
else {
n = 3 * n + 1;
n = n >> 1;
length += 2;
}
}
lengths[i] = length;
}
// Otherwise we just look it up
else
length = lengths[i];
// Check if the current cycle length is the maximum
if (length > maxLength)
maxLength = length;
}
return maxLength;
我不明白的地方:我的 IDE (IDEA) 告诉我,在这段代码中,变量 n
和 length
的初始化> 是多余的,但是,必须初始化 maxLength
,如果我不这样做,它就不会编译。
为什么会这样? maxLength
与 n
和 length
有何不同?
最佳答案
在所有代码路径上,您在尝试从中读取值之前初始化n
和length
。无论发生什么,您最初分配给它们的值都不会被使用,因为您会在需要之前用其他东西覆盖它。
maxLength
虽然会在您为其分配新值之前读取,当您进行 length > maxLength
比较时,或者在 return
,如果 for
循环被跳过。由于它在第一次传递时不会有值,因此您需要给它一个起始值才能使用。
关于java - 为什么变量初始化是多余的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35383779/
我的服务层有如下方法 public ModuleResponse GetModules(ModuleRequest request) { var response = new ModuleRe
我构建的工具栏与大多数工具栏一样,minHeight 设置为 actionBarSize: 但是,如果我删除这个属性,就完全没有区别了。工具栏保持其 actionBarSize,即使我删除菜单并将
我已经为 SVG 和剪辑路径苦苦挣扎了一段时间。 我正在尝试创建一个三 Angular 形剪辑路径,它将覆盖照片以给顶部一个“三 Angular 形”边缘。 我试图实现与照片完全相同的效果,但三 An
我有一个带有 2 个索引的 PostgreSQL 表。其中一个索引涵盖了 website_id 和 tweet_id 列,是一个唯一的 B 树索引。第二个索引只覆盖 website_id 列,是一个非
我是一名优秀的程序员,十分优秀!