<分区>
我遇到了这个 Java 程序,它以意想不到的方式运行。以下程序计算 int 数组中元素对之间的差异。
import java.util.*;
public class SetTest
{
public static void main(String[] args)
{
int vals[] = {786,678,567,456,
345,234,123,012};
Set<Integer> diffs = new HashSet<Integer>();
for(int i=0; i < vals.length ; i++)
for(int j = i; j < vals.length; j++)
diffs.add(vals[i] - vals[j]);
System.out.print(diffs.size());
}
}
如果我们分析它似乎设置大小应该是 8,这是数组的大小。但是如果你运行这个程序,它会打印出 14。这是怎么回事?任何的想法?
提前致谢。
答案:发生这种奇怪的行为是因为数组中的 012 变为八进制,如果我们将它更改为 12,那么它会按预期打印 8。
教训:永远不要用零填充整数文字。