считать чар в Java - PullRequest
1 голос
/ 15 июня 2010

что не так в этом коде?

import java.io.IOException;
import java.util.*;
public class char_digit {
    public static void main(String[] args) throws IOException {
        int count=0;

        while (true){
            char t=(char) System.in.read();
            if (t=='0'){
                break;
            }
            count++;

        }
        System.out.println(count);
    }
}


run:
a
b
c
d
e
f
0
12

Ответы [ 3 ]

8 голосов
/ 15 июня 2010

Вы считаете как новые строки, так и другие символы. Попробуйте что-то вроде if (t == '\n') continue; до текущей if.

2 голосов
/ 15 июня 2010

нет ничего плохого. Возврат каретки также считается как символ (или 2 в зависимости от вашей ОС)

1 голос
/ 15 июня 2010

Проблема в том, что вы также учитываете пробельные символы, которые вставляются при нажатии кнопки Enter в консоли.Одним из быстрых решений является использование Character.isWhitespace проверки следующим образом:

        if (t=='0'){
            break;
        } else if (!Character.isWhitespace(t)) {
            count++;
        }

В зависимости от того, что вы хотите сделать, может подойти java.util.Scannerтвоя цель лучше.Использование System.in.read напрямую крайне нетипично, особенно если вы читаете char, где Reader больше подходит.

Смежные вопросы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...