2013-11-17 7 views
0

Я новичок в программировании. Когда я пытаюсь выполнить свою программу, в консоли ничего не печатается. Но при компиляции я не получаю ошибок. Пожалуйста помоги.Ничего не печатается

Я пытаюсь прочитать содержимое файла и напечатать Да/Нет на основе значений 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."); 
     } 

    } 
} 
+2

Ничего не печатается? Даже «Завершено»? – Henry

ответ

1

charAt() возвращает символ. Измените вашу if statement, как показано ниже:

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

Еще одно наблюдение, в вашем коде переменная индекса, я, инициализируется 1. Но индекс строки начинается с 0. Таким образом инициализировать I к 0, чтобы получить правильный выход.

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"); 
1

Есть 2 способа получить ожидаемый результат.

Метод один

Изменить

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.

В 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++; 
Смежные вопросы