Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
1

Логическая ошибка в исключениях

18.06.2010, 15:22. Показов 588. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот написал код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package u;
public class Main {
final private static int N = 50;
    final private static java.io.BufferedReader jin =
        new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
 
    private static double min_rad(double x[], double y[], int n)  {
        double min = 0;
        double temp;
        int i;
                for (i = 0; i < n; i++)
               //Если значание темп больше минимума
            if ((temp = Math.sqrt(x[i] * x[i] + y[i] * y[i])) > min)
                    //Тогда минимуму присвоить темп
            min = temp;
        return min; //Вызвать минимум и передать аргументом функции
    }
    public static void main(String[] args) throws java.io.IOException,MyException {
        int n;
            //Объявляю 2 масива которыее могут содержать
            //не более 50 действительных чисел каждый
        double x[] = new double[N],
               y[] = new double[N];
        double radius;
        int i;
 
        System.out.print("Input n: ");
            //Здесь происходит ввод количества натуральных чисел
        n = Integer.parseInt(jin.readLine());
            //Цикл нужен для того, чтоб каждое число мы вводили с клавиатуры
            try{
        for (i = 0; i < n; i++)
        {
            System.out.print("Input x[" + i + "]: ");
            String str1 = jin.readLine();
                String str2 = jin.readLine();
                if(str1.equals(".") || str1.equals("0")){
                    throw new MyException("Ошибка, вы ввели неверные данные");
                }
                if(str2.equals(".") || str2.equals("0")){
                    throw new MyException("Ошибка, вы ввели неверные данные");
                }
 
                x[i] = Double.parseDouble(str1);
            System.out.print("Input y[" + i + "]: ");
 
                y[i] = Double.parseDouble(str2);
 
        }
            //Вызываю функцию min_rad и присваиваю её значение перменной radius
            radius = min_rad(x, y, n);
            //Вывожу радиус найменьшего круга
            System.out.print("Minimum radius: " + radius);
            }catch(MyException m){
                System.out.println(m.getMessage());
            }
 
    }
 
}

Java
1
2
3
4
5
6
7
8
9
10
11
12
package u;
public class MyException extends Exception{
public MyException(){
    super();
};
 
public MyException(String msg)
{
    super(msg);
};
 
}
Программа компилируется, но если ввести вначале цифру 2, а затем какую-то цифру программа выбрасывает исключение, не то которое я написал ,а вообще даже если вветси цифру программа выбрасывается.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2010, 15:22
Ответы с готовыми решениями:

Ошибка в исключениях
Вот код с исключением: #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;string.h&gt; #include...

логическая ошибка!!
1. Описать структуру с именем PRICE, содержащую следующие поля: - название товара; - название...

Логическая ошибка
Вот фрагмент int main() { using namespace std; int x = 1; double eps = 0.25;...

Логическая ошибка
List&lt;Element&gt; Result = new List&lt;Element&gt;(); public List&lt;Element&gt; Input1(List&lt;Element&gt;...

1
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
19.06.2010, 11:07 2
Где стэк трейс ошибки? Это во-первых.
Во-вторых, ты сначала выводишь сообщение с просьбой ввести x[i], а запрашиваешь сразу и y[i].
Цитата Сообщение от Syltan Посмотреть сообщение
Java
1
2
3
System.out.print("Input x[" + i + "]: ");
String str1 = jin.readLine();
String str2 = jin.readLine();
В-третьих, лучше сделать так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
try {
    System.out.print("Input x[" + i + "]: ");
    String str1 = jin.readLine();
    x[i] = Double.parseDouble(str1);
    // т.к. число с плавающей точкой проверяем значение 
    // с необходимой точностью (4 знака).
    // Точность можно поправить
    if (Math.abs(x[i]) < 1e-4) {
        throw new MyException("Ошибка, вы ввели неверные данные");
    }
} catch (NumberFormatException e) {
    // классу MyException добавить соответствующий конструктор
    throw new MyException("Ошибка, вы ввели неверные данные", e);
}
Для y[i] аналогично.
1
19.06.2010, 11:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2010, 11:07
Помогаю со студенческими работами здесь

Логическая ошибка в модуле
Ребят, помогите убрать логическую ошибку! В модуле есть 2 функции. 1 функция - считает суму...

Логическая ошибка в коде -()-
Доброго времени суток, помогите, пожалуйста, свежим взглядом найти ошибку в моем коде. Задание:...

Логическая ошибка в цикле for
Привет всем! Написал небольшую программу для изучения цикла for. Проблема в том, что все...

логическая ошибка в запросе
Помогите советом кто может Использую interbase 7.01 пишу запрос insert into jurispoln...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru