NumberFormat

 
0
 
Java
ava
SkyVelvet | 19.02.2013, 23:57

import java.text.NumberFormat;
import java.io.*;

public class Lab1 {
    

    public static void main(String[] args) throws IOException {
        
        
        java.text.NumberFomat nf = java.text.NumberFomat.getInstance();
                nf.setMaximumFractionDigits(2);
.
.
.
.
}

Почему не находит NumberFomat ?

C:\Users\Fruity\Desktop>javac lab1.java point3d.java
lab1.java:18: error: cannot find symbol
                java.text.NumberFomat nf = java.text.NumberFomat.getInstance();
                         ^
  symbol:   class NumberFomat
  location: package java.text
lab1.java:18: error: cannot find symbol
                java.text.NumberFomat nf = java.text.NumberFomat.getInstance();
                                                    ^
  symbol:   class NumberFomat
  location: package java.text
2 errors


Ответы (8)
ava
dorogoyIV | 20.02.2013, 09:25 #
Цитата (SkyVelvet @  19.2.2013,  22:57 findReferencedText)
java.text.NumberFomat

букву r пропустил  smile 
ava
SkyVelvet | 20.02.2013, 16:32 #
Цитата (dorogoyIV @ 20.2.2013,  09:25)
Цитата (SkyVelvet @  19.2.2013,  22:57 \\"findReferencedText\\")
java.text.NumberFomat


букву r пропустил  smile

Спасибо) Глупая ошибка, под вечер устал не заметил.

Добавлено позднее:
Не стал создавать новую тему ,но сейчас проблема совершенно в другом.
Мне нужно отловить ошибку ,в случае если пользователь вводит с клавиатуры не корректные данные.
В программе пользователю предоставляется возможность ввести координаты трёх точек, но я хочу ,что бы пользователь увидел нормальную ошибку во время выполнения программы ,в случае если он вводит не числа типа double. Ну допустим вместо числа пользователь ввел "as67\fg" и в этом случае он должен увидеть ошибку типа этой System.out.println("Ошибка. Вводите корректные данные точек");

/* Вводим координаты первой точки.*/
        System.out.println("Введите координату Х первой точки");
        String cStr = bReader.readLine();
        num = Double.parseDouble(cStr);
        p1.setX(num);
        
        System.out.println("Введите координату Y первой точки");
        String cStr1 = bReader.readLine();
        num = Double.parseDouble(cStr1);
        p1.setY(num);
        
        System.out.println("Введите координату Z первой точки");
        String cStr2 = bReader.readLine();
        num = Double.parseDouble(cStr2);
        p1.setZ(num);

......... и так все координаты для двух оставшихся точек.

Создавал блок try - catch после ввода всех точек.


try {
            /* Исключения. */
            num = Double.parseDouble(cStr);
            num = Double.parseDouble(cStr1);
            num = Double.parseDouble(cStr2);
            num = Double.parseDouble(cStr3);
            num = Double.parseDouble(cStr4);
            num = Double.parseDouble(cStr5);
            num = Double.parseDouble(cStr6);
            num = Double.parseDouble(cStr7);
            num = Double.parseDouble(cStr8);
            comma = Integer.parseInt(cStr9);
        }
        catch (IOException e) {
            System.out.println("Ошибка. Вводите корректные данные точек");
            System.exit(1);
        }


При компиляции вот такая ошибка:

C:\Users\Fruity\Desktop>javac lab1.java point3d.java
lab1.java:100: error: exception IOException is never thrown in body of correspon
ding try statement
        catch (IOException e) {
        ^
1 error
ava
batigoal | 20.02.2013, 17:36 #
Смотрим докуметацию на Double.parseDouble():

Цитата


public static double parseDouble(String s)
         throws NumberFormatException

Returns a new double initialized to the value represented by the specified String, as performed by the valueOf method of class Double.

Parameters:

s - the string to be parsed.

Returns:

the double value represented by the string argument.

Throws:

NumberFormatException - if the string does not contain a parsable double.



Т.е. будет выбрасываться не IOException, а NumberFormatException - его и лови.
ava
SkyVelvet | 20.02.2013, 19:48 #
Цитата (batigoal @ 20.2.2013,  17:36)
Смотрим докуметацию на Double.parseDouble():



Цитата



public static double parseDouble(String s)
         throws NumberFormatException


Returns a new double initialized to the value represented by the specified String, as performed by the valueOf method of class Double.


Parameters:


s - the string to be parsed.


Returns:


the double value represented by the string argument.


Throws:


NumberFormatException - if the string does not contain a parsable double.






Т.е. будет выбрасываться не IOException, а NumberFormatException - его и лови.

Если я ловлю NumberFormatException ,то вот что вылезает когда пользователь вводит не то что нужно.


C:\Users\Fruity\Desktop>java -cp . Lab1
Введите координату Х первой точки
f

Exception in thread "main" java.lang.NumberFormatException: For input string: "f
"
        at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
        at java.lang.Double.parseDouble(Unknown Source)
        at Lab1.main(lab1.java:38)


А по задумке должно вылезать System.out.println("Ошибка. Вводите корректные данные точек");

Добавлено позднее:
По сути попробовал без блока try - catch ввести не правильные данные и происходит то же самое. Как будто этот блок вообще ничего не делает.
ava
Pawl | 20.02.2013, 21:22 #
Блок try / catch написан правильно (с учетом NumberFormatException). Вот простейший рабочий пример:

public class InputTest {
    public static void main(String[] args) {
     double num = 0;
        try {
            num = Double.parseDouble("f");
        }
        catch (NumberFormatException e) {
            System.out.println("Ошибка. Вводите корректные данные точек");
            System.exit(1);
        }
    }
}
 смотрите косяки в других частях вашей программы.
ava
SkyVelvet | 20.02.2013, 21:38 #
throws IOException ,а зачем нужна эта приписка после main? Просто это из за неё выдается эта ошибка

C:\Users\Fruity\Desktop>java -cp . Lab1
Введите координату Х первой точки
f
Exception in thread "main" java.lang.NumberFormatException: For input string: "f
"
        at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
        at java.lang.Double.parseDouble(Unknown Source)
        at Lab1.main(lab1.java:38)

Но без этой приписки не работает bReader.readLine();
ava
batigoal | 21.02.2013, 10:00 #
Из-за нее ошибка возникать не может. Это просто объявление, что в этом участке кода возможно возникновение IOException (да, в методе readLine()). Но это не значит, что ошибка обязательно должна произойти.

Выкладывайте код Lab1 целиком. Ну и заодно - почитайте про механизм обработки исключений в Java, без этого все равно не обойтись.
ava
SkyVelvet | 21.02.2013, 20:03 #
Цитата (batigoal @ 21.2.2013,  10:00)
Из-за нее ошибка возникать не может. Это просто объявление, что в этом участке кода возможно возникновение IOException (да, в методе readLine()). Но это не значит, что ошибка обязательно должна произойти.



Выкладывайте код Lab1 целиком. Ну и заодно - почитайте про механизм обработки исключений в Java, без этого все равно не обойтись.

Спасибо огромное за помощь) Действительно на утро прочитал про обработку исключений http://aectann.wikidot.com/java-exceptions-handling ,в этой статье оч хорошо все расписано. И понял в чем была ошибка. Решил проблему так ,что в блок try {} занес кусок кода где я считываю все что вводит пользователь 

System.out.println("Введите координату Х первой точки");
        String cStr = bReader.readLine();
        num = Double.parseDouble(cStr);
        p1.setX(num);
......и все последующие считывания для всех точек.

Ну ,а блок catch даже и не изменял.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить