什么都没打印出来

时间:2013-11-17 08:08:39

标签: java

我是编程新手。当我尝试执行我的程序时,没有任何东西在控制台中打印出来。但是编译时我没有收到任何错误。请帮忙。

我正在尝试读取文件的内容,并根据文件中的值1/0打印是/否。

以下是我的文件内容:

10000111100101010010010000100010001100010001000010000100000111111010110101011

以下是我的代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ReadFile {

    public static void main(String[] args) throws IOException {
        int i = 1;
        try {
            StringBuilder sb = new StringBuilder();
            sb.append(new BufferedReader(new FileReader("E:\\File.txt")).readLine());
            if (sb.length() > 0) {
                while (i < sb.length()) {
                    if (sb.charAt(i) == 1)
                        System.out.println("Yes");
                    else if (sb.charAt(i) == 0)
                        System.out.println("No");
                    i++;
                }
            }
        } finally { 
            System.out.println("Completed.");
        }

    }
}

3 个答案:

答案 0 :(得分:1)

charAt()返回一个字符。更改您的if statement,如下所示:

if (sb.charAt(i) == '1') {
    ...
} else if (sb.charAt(i) == '0') {
    ...
}

另一个观察,在你的代码中,索引变量i被初始化为1.但是String的索引从0开始。所以将i初始化为0,以获得正确的输出。

答案 1 :(得分:1)

charAt()返回char而不是int。如果您将char分配给int,将转换为ASCII值。因此,即使sb.charAt(i)==1,您的1也会为假。写得像:

if (sb.charAt(i) == '1')
     System.out.println("Yes");
else if (sb.charAt(i) == '0')
    System.out.println("No");

答案 2 :(得分:1)

有两种方法可以获得预期的结果。

方法一

更改

 if (sb.charAt(i) == 1)
                    System.out.println("Yes");
                else if (sb.charAt(i) == 0)
                    System.out.println("No");

if (sb.charAt(i) == '1')
                    System.out.println("Yes");
                else if (sb.charAt(i) == '0')
                    System.out.println("No");
                i++;

方法二

您可以使用Ascii比较char值。

在Ascii中,char'1'是49; char'0'为48.使用以下代码,您也可以获得预期的结果。

  if (sb.charAt(i) == 49)
                    System.out.println("Yes");
                else if (sb.charAt(i) == 48)
                    System.out.println("No");
                i++;