【发布时间】:2017-02-07 13:55:47
【问题描述】:
我正在练习 Java 较新的面试编码示例。
我正在尝试编写一个程序来查找1 到N 之间的重复数字,其中 N 由用户和数字本身一起给出。
代码如下:
import java.io.DataInputStream;
import java.io.IOException;
public class DuplicateNumbers {
public static void main(String[] args) throws IOException {
DataInputStream in = new DataInputStream(System.in);
System.out.println(" Enter the number of numbers ");
int a = in.readInt();
int[] num = new int[a];
System.out.println(" Enter the ints one by one ");
for (int b = 0; b < a; b++) {
System.out.println(" Enter no "+(b+1));
num[b]=in.readInt();
}
int c = 0;
for (int d = 0; d < a; d++) {
int f = 0;
c = num[d];
for (int e=0; e<a; e++) {
if (c==num[e]) {
f++;
}
}
if(f > 1)
System.out.println(" Duplicate number "+c);
}
}
}
但我在 Eclipse Neon 中遇到以下错误:
Enter the number of numbers
5
Exception in thread "main" java.lang.OutOfMemoryError:
Java heap space at DuplicateNumbers.main(DuplicateNumbers.java:14)
怎么了?为什么JVM堆空间错误? 代码编译运行良好。
【问题讨论】:
-
嗯,它没有 “运行良好”,这就是你在这里询问异常的原因......它是否在line
int[] num=new int[a];你试过加断点调试代码吗? -
你从哪里了解到 DataInputStream 是如何读取用户输入的?
-
不,先生,我不是要复制任何人的代码。我只是有一个要练习的程序列表,我尝试自己编写代码,当我用尽逻辑和耐心时,我会寻求帮助。
-
仅作记录:您仍然可以接受其中一个答案;以防您发现它们足够有用 ;-)
标签: java out-of-memory