我是编程新手。当我尝试执行我的程序时,没有任何东西在控制台中打印出来。但是编译时我没有收到任何错误。请帮忙。
我正在尝试读取文件的内容,并根据文件中的值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.");
}
}
}
答案 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++;