• ,

level15.lesson12.home01 не проходит тестирование.

Задача.

/* Разные методы для разных типов
1. Считать с консоли данные, пока не введено слово «exit».
2. Для каждого значения вызвать метод print. Если значение:
2.1. содержит точку '.', то вызвать метод print для Double;
2.2. больше нуля, но меньше 128, то вызвать метод print для short;
2.3. больше либо равно 128, то вызвать метод print для Integer;
2.4. иначе, вызвать метод print для String.
*/

Решение

package com.javarush.test.level15.lesson12.home01;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Solution {
    public static void main(String[] args) throws IOException {
        //напиште тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> array = new ArrayList<String>();
        String s = reader.readLine();

        while (true)
        {
            array.add(s);
            if (s.equals("exit"))
                break;
            else
                s = reader.readLine();
        }

        for (String st : array)
        {
            if (st.contains("."))
                try
                {
                    print(Double.parseDouble(st));
                    continue;
                } catch (Exception e)
                {
                  print(st);
                  continue;
                }
            else
            try
            {
                int i = Integer.parseInt(st);
                if ( i > 0 && i < 128)
                {
                    print((short)i);
                    continue;
                }
                else
                {
                    print(i);
                    continue;
                }
            } catch (Exception e)
            {
                print(st);
                continue;
            }
        }


    }

    public static void print(Double value) {
        System.out.println("Это тип Double, значение " + value);
    }

    public static void print(String value) {
        System.out.println("Это тип String, значение " + value);
    }

    public static void print(short value) {
        System.out.println("Это тип short, значение " + value);
    }

    public static void print(Integer value) {
        System.out.println("Это тип Integer, значение " + value);
    }
}


Пробовал разные значение, в консоль все выдает корректно, но тест не проходит.

6 комментариев

AndySkvo
1. Оформи код в тэг code.
2. Выложи весь код с импортами в том числе.
3. ArrayListarray = new ArrayList(); — тут скорей всего опечатка.
4. « » — у меня такие кавычки не работают. Валидный вариант — "".
AndySkvo
Попробуй сразу (после каждого считывания) обрабатывать данные и выводить в консоль сообщения. Я так делал.
KolesAV
Так тоже не проходит
package com.javarush.test.level15.lesson12.home01;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Solution {
    public static void main(String[] args) throws IOException {
        //напиште тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        //ArrayList<String> array = new ArrayList<String>();
        String s = reader.readLine();

        while (true)
        {
            if (s.contains("."))
                try
                {
                    print(Double.parseDouble(s));

                } catch (Exception e)
                {
                    print(s);

                }
            else
                try
                {
                    int i = Integer.parseInt(s);
                    if ( i > 0 && i < 128)
                    {
                        print((short)i);

                    }
                    else
                    {
                        print(i);

                    }
                } catch (Exception e)
                {
                    print(s);

                }

            if (s.equals("exit"))
                break;
            else
                s = reader.readLine();
        }
    }

    public static void print(Double value) {
        System.out.println("Это тип Double, значение " + value);
    }

    public static void print(String value) {
        System.out.println("Это тип String, значение " + value);
    }

    public static void print(short value) {
        System.out.println("Это тип short, значение " + value);
    }

    public static void print(Integer value) {
        System.out.println("Это тип Integer, значение " + value);
    }
}
Verenich_go_to
Может кому помогу. Этот код отличный, но есть нюанс. Если ты изначально введешь exit, то отработает блок по выводу этой строки и помечанием типа String. Проверка на exit надо перенести в самое начало цикла, чтоб в случае ввода этого слова сразу брэйкаться, а не идти по циклу дальше.
gnev
  • gnev
  • 0
мож как вариант… если в строке есть точка, то не факт что это вообще дабл.
KolesAV
Так и есть. Если double не парсится из строки с точкой, то это просто String.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.