Java应用程序即时退出

时间:2015-11-18 00:45:33

标签: java

我正在尝试制作一个从网站下载大量图像的java程序。但是,一旦我上课,它就会立即退出,我无法弄明白为什么。这是我的代码:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.HashMap;

public class Main {

    static HashMap<Integer, String> hmap = new HashMap<Integer, String>();

    public static void main(String[] args) throws IOException {
        for(int i = 1; i > 151; i++) {
            for(int i1 = 1; i1 > 151; i1++) {
                if(i == i1) {
                    continue;
                }
                String imageUrl1 = "http://images.alexonsager.net/pokemon/fused/" + i + "/" + i + "." + i1 + ".png";
                String destinationFile1 = hmap.get(i) + " and " + hmap.get(i1);
                saveImage(imageUrl1, destinationFile1);
                System.out.println("Downloaded " + destinationFile1);
            }
        }
    }

    public static void saveImage(String imageUrl, String destinationFile) throws IOException {
        URL url = new URL(imageUrl);
        InputStream is = url.openStream();
        OutputStream os = new FileOutputStream(destinationFile);

        byte[] b = new byte[2048];
        int length;

        while ((length = is.read(b)) != -1) {
            os.write(b, 0, length);
        }

        is.close();
        os.close();
    }

    public static void createHash() {
        //hmap.put(int, string) times 151
    }
}

我想要它做的是下载,比如,i = 1和i1 = 2,然后下载i = 1和i1 = 3,依此类推,直到两者都达到151(它们都不能相等) 。总而言之,这将下载22650个文件,总共约为27.6MB。那就是说,这是java设置本身的内存问题(我有32GB的RAM,所以我用完了不是一个选项),还是代码有问题?

如果有人可以帮助我,我将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

我永远不会超过151,所以你永远不会进入你的循环。

解决方案

for (int i = 1 ; i < 151 ; i++)