Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Кодировка ввода


Автор: Golovastik 20.12.2010, 19:33
Не получается сделать так чтоб вводилось на русском, пробую писать так, не выходит.
Код

package javaapplication3;
import java.io.*;

class Main{
public static void main(String[] args) throws IOException{
System.out.println("Введите число");
BufferedReader ok =
new BufferedReader(new InputStreamReader(System.in,"CP866"));
String str;
str = ok.readLine();
System.out.println("Вы ввели "+str);
}
}


Автор: Golovastik 20.12.2010, 20:10
2)Как сделать проверку, что введённое
если является числом типа даубле, выдать сообщение об этом?
Если другого типа, также выдать сообщение об этом.

Автор: nc30 22.12.2010, 12:21
Цитата(Golovastik @ 20.12.2010,  20:10)
2)Как сделать проверку, что введённое
если является числом типа даубле, выдать сообщение об этом?
Если другого типа, также выдать сообщение об этом.

Одно и то же число может принадлежать нескольким типам. В Java для примитивных классов есть обертки, которые имеют соответствующие методы парсинга. Позапускайте код, попробуйте разобраться. 
Код

    public static void main(String[] args) throws IOException {
        System.out.print("Введите число: ");
        BufferedReader br = new BufferedReader(
                new InputStreamReader(System.in, "CP1251"));  // кодировка для Win
        String str = br.readLine();
        System.out.println("Вы ввели: " + str);
        try {
            // парсим в порядке убывания диапазонов значений
            double d = Double.parseDouble(str);
            // отбрасываем значения бесконечностей
            if (!Double.isInfinite(d))
                System.out.print("Это число. Его возможный тип: double");
            
            float f = Float.parseFloat(str);
            if (!Float.isInfinite(f))
                System.out.print(", float");

            Long.parseLong(str);
                System.out.print(", long");
            Integer.parseInt(str);
                System.out.print(", int");
            Short.parseShort(str);
                System.out.print(", short");
            Byte.parseByte(str);
                System.out.print(", byte");
        } catch (NumberFormatException e) {}
        System.out.println();
    }

Кстати, Double.parseDouble() и Float.parseFloat() считают "своими" также и целочисленные значения (а вылетающие за их диапазон значения считают "+" или "-" бесконечностью). Если все же нужно четко различать ввод целочисленных значений и чисел с плавающей точкой (плюс к тому можно реализовать проверку вхождения числа в диапазоны значений типов), то это сделать несложно, и вы вполне справитесь с этим самостоятельно smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)