【发布时间】:2016-02-20 15:29:13
【问题描述】:
我对 java 还很陌生,所以如果这是一个愚蠢的问题,我深表歉意,但我一直从基础开始并逐步建立。我最近从一个教程中进入了数组,我让它们在不同的实例中工作,但现在它们似乎没有输出正确的值。这是我的代码:
import java.util.Random;
class mainstart {
public static void main (String[] args) {
Random rand = new Random();
int freq[]=new int[7];
for(int roll = 0; roll<1000; roll++){
++freq[1+rand.nextInt(6)];
}
System.out.println("Face\tFrequency");
for(int face=1;face<freq.length;face++){
System.out.println(face + "\t" + freq);
}
}
}
这个程序应该掷骰子 1000 次并在图表中列出频率,但是当我运行代码时,它会给我一个数字和字母序列,如下所示:
Face Frequency
1 [I@6d06d69c
2 [I@6d06d69c
3 [I@6d06d69c
4 [I@6d06d69c
5 [I@6d06d69c
6 [I@6d06d69c
我最初偏离了教程,以帮助我更好地记住它而不是直接复制,但即使在那之后我也无法让它工作。除了类名之外,我最终逐行复制,但仍然无法让它输出值,即使我看到它对其他人工作得很好。
我不确定我是否可以在此处链接视频,但至于我是否更改了设置?还是只是我忽略了一些简单的事情? 我试着研究了这个,但我不太知道在哪里找,希望有人能提供帮助。
【问题讨论】:
-
System.out.println(face + "\t" + freq[face]);... -
确实如此。您要求输出
freq所在的内存地址,而不是数组中存储的值。 -
请不要忘记:您的数组从索引 0 开始。而您从 1 开始面对。
-
感谢大家的快速回复
-
@Auzias 这不是内存位置,它只是数组的
toString(),其中包括哈希码,与普遍认为的相反,它与大多数 JVM 中的内存地址无关实现。
标签: java