Код непрерывного ввода Java

Итак, программа, которую я пытаюсь понять, как кодировать (на самом деле не исправить), мне приходится использовать Java, чтобы принимать непрерывный ввод от пользователя, пока он не введет точку. Затем он должен вычислить общее количество символов, введенных пользователем до точки.

import java.io.*;
class ContinuousInput
{
    public static void main(String[] args) throws IOException
    {
    InputStreamReader inStream = new InputStreamReader (System.in);
    BufferedReader userInput = new BufferedReader (inStream);
    String inputValues;
    int numberValue;
    System.out.println("Welcome to the input calculator!");
    System.out.println("Please input anything you wish: ");

    inputValues = userInput.readLine();

    while (inputValues != null && inputValues.indexOf('.')) {
    inputValues = userInput.readLine();
    }
    numberValue = inputValues.length();
    System.out.println("The total number of characters is " + numberValue + ".");

    System.out.println("Thank you for using the input calculator!");
    }
}

Пожалуйста, не предлагайте использовать Scanner, платформа Java SE, на которой мы застряли, — это модель SDK 1.4.2_19, и мы не можем ее обновить. Объяснение пустых фигурных скобок: я думал, что если я поставлю пустые фигурные скобки, это позволит непрерывный ввод до тех пор, пока не будет введена точка, но ясно, что это не так...

Изменить: обновленный код Текущая ошибка: не закончится, когда . вводится.


person Anthony Owen    schedule 27.05.2013    source источник
comment
Этот код, скопированный из вашей среды разработки, с этими > символами?   -  person AllTooSir    schedule 27.05.2013
comment
Вы, вероятно, захотите использовать циклы (пока/для)   -  person BobTheBuilder    schedule 27.05.2013
comment
См. этот ответ для сопоставимого решения: stackoverflow.com/a/16441949/714965   -  person Kai    schedule 27.05.2013


Ответы (1)


Вы должны переключить оператор if/else на while.

Образец :

inputValues = userInput.readLine();
while (!".".equals(inputValues) {
   //do your stuff
   //..and after done, read the next line of the user input.
   inputValues = userInput.readLine();
}

Примечание. Никогда не сравнивайте значения объектов String с оператором ==. Используйте метод equals().

Если вы просто хотите проверить, содержит ли введенное пользователем предложение символы ., вам просто нужно переключиться с equals() на contains(). Это встроенный метод класса java.lang.String.

Образец:

 while (inputValues != null && !inputValues.contains(".")) {
    //do your stuff
 }
person Konstantin Yovkov    schedule 27.05.2013
comment
Спасибо за помощь! Это работает, но теперь мне просто нужно выяснить, как его отлаживать. Кажется, что он не хочет прекращать чтение, если вы поместите код в одну строку (IE: это предложение.). Мне также нужна модель, которая будет читать несколько строк и вычислять одно и то же. - person Anthony Owen; 27.05.2013
comment
К сожалению, теперь я не могу разрешить символ ( while(!..contains(inputValues)) ), направленный на первую цитату, указывающий, что метод содержит (java.lang.String). Честно говоря, я не очень хорошо знаю Java. :/ - person Anthony Owen; 27.05.2013
comment
Та же ошибка, направленная на .contains сейчас. Ява, почему ты делаешь это? - person Anthony Owen; 27.05.2013
comment
Не удается разрешить символ, метод содержит (java.lang.String), расположение: класс java.lang.String, в то время как (inputValues ​​!= null && !inputValues.contains(.), стрелка указывает на область .contains(.). - person Anthony Owen; 27.05.2013
comment
Ах да, там не хватает закрывающей скобки ). Скопируйте его снова, и теперь он должен работать. - person Konstantin Yovkov; 27.05.2013
comment
У меня уже была закрытая скобка в коде. Я убедился, что поставил его. - person Anthony Owen; 27.05.2013
comment
хорошо, поменяй местами inputValues.contains(".") с inputValues.indexOf('.') == -1 - person Konstantin Yovkov; 27.05.2013
comment
Вы уверены, что это inputValues.indexOf('.') == -1 ? - person Konstantin Yovkov; 27.05.2013