Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Исключение и отсортировка цикла
#11
Aquanox Написал:Для начала идентификаторы, одна буква конечно кратко, но все же это чересчур кратко. Имена классов должны понятные: DistanceType либо DistanceUnit вместо m и Route вместо c.
Имена полей не должны начинаться с префиксов _ либо m / f, в Java используется camelCaseNames для всего и UpperCamelCase для имен классов.

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


this внутри класса можно опускать и обращаться к полям напрямую, тоесть вместо this.myProperty писать myProperty (однако, как исключение обязательно если происходит перекрытие имен, но тут это не важно)

Спасибо, я это учту. Как бы не много извращенский получился код, но больше уклон делал на ООП, нежели процедурным. Т.е. не мог понять наследование, как это работает и в итоге поизащерясь, все стало на свои места.
Когда дописал код в классах (тем самым оптемезируя его) - я приступил описывать запуск программы.
PHP код:
<?php 
System
.out.print("Введите значение: ");
String resault = read.readLine();
И захотелось мне поставить проверку, если пользователь ввел НЕ число, то ввести повторно и тут такой аспект, как это лучше сделать: исключение или if/else. И к сожалению, незнаю, как проверить именно на число.

и еще

PHP код:
<?php 
/*
*Integer.valueOf(resault) - число, которое ввел пользователь.
*c m = new c(v.nextInt(30), "маршурут №"); - создаем объект и передаем свойства.
*m.setMess(m.Strel(m.Mera(v.nextInt(5)))):
* v.nextInt(5) - рандом число
* m.Mera() - получаем значение вычисления
* m.Strel() - получаем значение вычисления
* m.setMess() - выводим на экран
* */
for(int i =0; i <= Integer.valueOf(resault);i++){
c m = new c(v.nextInt(30), "маршурут №");
m.setMess(m.Strel(m.Mera(v.nextInt(5))));
/*Результат: маршурут № 27
Результат: маршурут № 1
Результат: маршурут № 6
Результат: маршурут № 6
Результат: маршурут № 13
Результат: маршурут № 27
Результат: маршурут № 28
Результат: маршурут № 8
Результат: маршурут № 6
Результат: маршурут № 2
Результат: маршурут № 10

отсортировать результат цикла на повторяющиеся данные
и вывести на экран
*/
}
Что лучше будет, массив, коллекции или еще один цикл?

Спасибо!

Добавлено через 2 минуты
Ashe Написал:Здесь можно использовать Scanner:

[src=java]
Scanner sc = new Scanner(System.in); // создаём объект класса Scanner
System.out.print("Введите целое число: ");
if (sc.hasNextInt()) // возвращает истинну если с потока ввода можно считать целое число
{
int i = sc.nextInt(); // считывает целое число с потока ввода и сохраняем в переменную
System.out.println(i);
}
else
{
System.out.println("Вы ввели не целое число");
}
[/src]

Спасибо, а только через класс Scanner можно усуществить данную проверку или есть инной способ более эффектный.
Ответ
#12
Virt, через Scanner в данном случае будет кашернее, имхо. Тем более Вы оперируете с числами, а реализуете через String.
Fortuna - non penis, in manus non recipe.
Ответ
#13
Ashe Написал:Virt, через Scanner в данном случае будет кашернее, имхо. Тем более Вы оперируете с числами, а реализуете через String.
Окей, а как будет возможно реализовать через Integer ?
Ответ
#14
Virt Написал:Спасибо, а только через класс Scanner можно усуществить данную проверку или есть инной способ более эффектный.

Можно еще преобразовывать строку в инт и ловить ошибку:

[src=java]public boolean isInteger(String str)
{
try
{
Integer.parseInt(str);
return true;
}
catch(Exception e)
{
return false;
}
}
[/src]


Или пройтись регуляркой, но это уже совсем извращение:

[src=java]public boolean isInteger(String str)
{
return str.matches("(-|\\+)?[0-9]+(\\.[0-9]+)?");
}
[/src]
Ответ
#15
Допустем я вот сделал вот так и у меня получилось:
[src=java]BufferedReader read = new BufferedReader(new InputStreamReader(System.in));

System.out.print("Введите значение: ");
String resault = read.readLine();
try{
int s = Integer.valueOf(resault);
System.out.println(s);
}catch (Exception e){
System.out.println("ввели не число");
return;
}[/src]
На сколько актуально будет данная конструкция?

Добавлено через 2 минуты
Java-man Написал:Можно еще преобразовывать строку в инт и ловить ошибку:

[src=java]public boolean isInteger(String str)
{
try
{
Integer.parseInt(str);
return true;
}
catch(Exception e)
{
return false;
}
}
[/src]


Или пройтись регуляркой, но это уже совсем извращение:

[src=java]public boolean isInteger(String str)
{
return str.matches("(-|\\+)?[0-9]+(\\.[0-9]+)?");
}
[/src]

Вооо, спасибо Вам! Теперь все ясно. И я тут сам уже реализовал по другому через исключение при помощи приведение типов.

Добавлено через 3 минуты
И теперь настала истина: при большом потоке, что будет работать быстрее и занимать меньше памяти?=))
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 3 Гость(ей)