首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PrintStream阵列

PrintStream阵列
EN

Stack Overflow用户
提问于 2015-11-17 07:33:29
回答 2查看 640关注 0票数 1

我正在尝试创建一个方法,将int[][]列表和文件名字符串outName作为参数,读取每个list[i][j]条目并相应地将它们转换为ascii字符。

这就是我所拥有的:

代码语言:javascript
复制
public static void makeAscii(int[][] list, String outName) {
    try {
    PrintStream output = new PrintStream(new File(outName));
    for (int i = 0; i<list.length; i++) {
        for (int j = 0; j<list[0].length; j++){
        if (list[i][j] <= 20 && list[i][j] >= 0) {
            System.out.print('M');
        }
        if (list[i][j] <= 21 && list[i][j] >= 40) {
            output.print('L');
        }
        if (list[i][j] <= 41 && list[i][j] >= 60) {
            output.print('I');
        }
        if (list[i][j] <= 61 && list[i][j] >= 80) {
            output.print('o');
        }
        if (list[i][j] <= 81 && list[i][j] >= 100) {
            output.print('|');
        }
        if (list[i][j] <= 101 && list[i][j] >= 120) {
            output.print('=');
        }
        if (list[i][j] <= 121 && list[i][j] >= 140) {
            output.print('*');
        }
        if (list[i][j] <= 141 && list[i][j] >= 160) {
            output.print(':');
        }
        if (list[i][j] <= 161 && list[i][j] >= 180) {
            output.print('-');
        }
        if (list[i][j] <= 181 && list[i][j] >= 200) {
            output.print(',');
        }
        if (list[i][j] <= 201 && list[i][j] >= 220) {
            output.print('.');
        }
        if (list[i][j] <= 221 && list[i][j] >= 255) {
            output.print(' ');
        }
        }
        System.out.println();
    }
    }
    catch (FileNotFoundException e) {
        System.out.println("Coudln't create file");
        System.exit(-1);
    }

}

我遇到的问题是,虽然这个方法相应地创建了一个txt文件,但它并没有在文本文件中写入任何字符,从而使文件成为空白。为什么会这样呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-17 07:36:29

你在你的if中倒置了条件。

第一个例子是:

代码语言:javascript
复制
if (list[i][j] <= 21 && list[i][j] >= 40) {

这意味着,当一个数字小于21,大于40时,它将是真实的。很明显,这是不可能的。您需要将条件转换为:

代码语言:javascript
复制
if (list[i][j] <= 40 && list[i][j] >= 21) {

其余的if也是如此。

另外,请注意,您需要在方法的末尾关闭PrintStream。一个好的做法是用一个试着用资源语句包装它。

票数 2
EN

Stack Overflow用户

发布于 2015-11-17 07:38:18

您还需要刷新输出流才能真正写入文件,否则它就在缓冲区中。在程序的末尾,执行output.close();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33751420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档