Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простая задача. Вычисление выражения. ввод/вывод, исключения 
:(
    Опции темы
Адриано
Дата 29.9.2012, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.9.2012

Репутация: нет
Всего: нет



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

(4*c + d - 1) / (c - 2)

c - int; d - double.

Исходные данные должны вводиться с клавиатуры, с проверкой на область допустимых значений.

Организовать проверку, как минимум для int c , чтобы при вводе её значение было в пределах диапазона значений для int. Можно сделать то же и для double d.

Предусмотреть исключения. 

Отсюда вопросы:
1) Как лучше организовать ввод значений с клавиатуры?
2) Как проверять значение переменной с при вводе (чтобы оно было подходящим для типа int) ?
PM MAIL   Вверх
priam220
Дата 29.9.2012, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



PM MAIL   Вверх
dorogoyIV
Дата 30.9.2012, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



при вводе d надо вводить не точку на цифровой клаве, а запятую на буквах
Код

import java.util.*;

public class Main
{
 public static void main(String [] args)
 {
  try
  {
   while(true)
   {
    Scanner sc = new Scanner(System.in);

    System.out.println("enter c");
    int c = sc.nextInt();
    System.out.println("c = " + c + "\n");

    System.out.println("enter d");
    double d = sc.nextDouble();
    System.out.println("d = " + d + "\n");

    double result = (4 * c + d - 1) / (c - 2);
    System.out.println("(4 * c + d - 1) / (c - 2) = " + result + "\n\n");
   }
  }
  catch(Exception ex)
  {
   System.out.println("Error\n" + ex);
  }
 }
}

PM MAIL   Вверх
Адриано
Дата 30.9.2012, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.9.2012

Репутация: нет
Всего: нет



Спасибо за ответы!

Да, с этим scanner'ом программа выглядит проще и понятней. А я писал так:
(не конкретно по той задаче, что выше, а ввод/вывод)
Код

import java.io.*;

class Steretj {
   public static void main (String args[]) throws IOException {

      BufferedReader vvod = new BufferedReader (
                        new InputStreamReader(System.in));

      //Ввод строк
      System.out.print("Введите имя ");
      String imja = vvod.readLine();

      System.out.print("Введите отчество ");
      String ot4 = vvod.readLine();   

      System.out.print("Введите фамилию ");
      String famil = vvod.readLine();

      System.out.println("Здравствуйте, " + imja + " " + ot4 + " " + famil);

      //Ввод целого
      System.out.print("Введите возраст ");
      int vozrast = Integer.valueOf(vvod.readLine()).intValue(); 

      //Ввод double
      System.out.print("Введите зарплату ");
      double zarplata = Double.valueOf(vvod.readLine()).doubleValue();
      
      System.out.println("Ваш возраст:  " + vozrast);  

      System.out.printf("зарплата: ",  zarplata);

   }//end main
}//end class


Не подскажете, в ТАКОМ способе ввода есть какие-то недостатки по сравнению со Scanner ? Сразу заметно, что по-моему писать более длинно... Может быть, ещё что-то? 
(Кириллица в коде Java -- это, наверное, неправильно? Но это был тренировочный пример, только для себя и только для моего компьютера. Кроссплатформенность не нужна smile )

В общем, прошу конструктивной критики моего кода, который выше.

Это сообщение отредактировал(а) Адриано - 30.9.2012, 11:36
PM MAIL   Вверх
Адриано
Дата 30.9.2012, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.9.2012

Репутация: нет
Всего: нет



Цитата(dorogoyIV @ 30.9.2012,  00:58)
при вводе d надо вводить не точку на цифровой клаве, а запятую на буквах

А почему запятую, а не точку? Это как-то связано с местными настройками?

Проверил ваш код. Получается при вводе действительного числа пишем запятую, а при выводе получаем точку. Просто хочется разобраться и понять.
PM MAIL   Вверх
dorogoyIV
Дата 30.9.2012, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(Адриано @  30.9.2012,  11:25 Найти цитируемый пост)
Не подскажете, в ТАКОМ способе ввода есть какие-то недостатки по сравнению со Scanner ?

вообщето в данном случае как бы нет разницы...
дело в том, что, у Scanner есть специфичные методы - nextInt(), nextDouble(), ...
ну а ты можешь использовать BufferedReader и я не вижу в этом ошибки!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0480 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.