我遇到了这个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());
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们分析它似乎设置大小应该是8,这是数组的大小.但是,如果你运行这个程序,它打印14.发生了什么?任何的想法?
先感谢您.
答:这种奇怪的行为发生是因为如果我们将数组改为12则数组中的012变为八进制,然后按预期打印8.
课程:永远不要用零填充整数文字.
归档时间: |
|
查看次数: |
259 次 |
最近记录: |