Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Java (https://forum.zone-game.info/forumdisplay.php?f=126)
-   -   Исключение и отсортировка цикла (https://forum.zone-game.info/showthread.php?t=22764)

Virt 08.09.2012 18:35

Re: Исключение и отсортировка цикла
 
Цитата:

Сообщение от Aquanox (Сообщение 225349)
Для начала идентификаторы, одна буква конечно кратко, но все же это чересчур кратко. Имена классов должны понятные: DistanceType либо DistanceUnit вместо m и Route вместо c.
Имена полей не должны начинаться с префиксов _ либо m / f, в Java используется camelCaseNames для всего и UpperCamelCase для имен классов.

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


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

Спасибо, я это учту. Как бы не много извращенский получился код, но больше уклон делал на ООП, нежели процедурным. Т.е. не мог понять наследование, как это работает и в итоге поизащерясь, все стало на свои места.
Когда дописал код в классах (тем самым оптемезируя его) - я приступил описывать запуск программы.
PHP код:

System.out.print("Введите значение: "); 
        
String resault read.readLine(); 

И захотелось мне поставить проверку, если пользователь ввел НЕ число, то ввести повторно и тут такой аспект, как это лучше сделать: исключение или if/else. И к сожалению, незнаю, как проверить именно на число.

и еще

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<= 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 (Сообщение 225352)
Здесь можно использовать Scanner:

 
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("Вы ввели не целое число");
}
 
Code: Java

Спасибо, а только через класс Scanner можно усуществить данную проверку или есть инной способ более эффектный.

Ashe 08.09.2012 18:46

Re: Исключение и отсортировка цикла
 
Virt, через Scanner в данном случае будет кашернее, имхо. Тем более Вы оперируете с числами, а реализуете через String.

Virt 08.09.2012 18:54

Re: Исключение и отсортировка цикла
 
Цитата:

Сообщение от Ashe (Сообщение 225359)
Virt, через Scanner в данном случае будет кашернее, имхо. Тем более Вы оперируете с числами, а реализуете через String.

Окей, а как будет возможно реализовать через Integer ?

JavaMan 08.09.2012 18:54

Re: Исключение и отсортировка цикла
 
Цитата:

Сообщение от Virt (Сообщение 225353)
Спасибо, а только через класс Scanner можно усуществить данную проверку или есть инной способ более эффектный.

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

public boolean isInteger(String str)
{
   try
   {
      Integer.parseInt(str);
      return true;
   }
   catch(Exception e)
   {
      return false;
   }
}
 
Code: Java

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

public boolean isInteger(String str)
{
   return str.matches("(-|\\+)?[0-9]+(\\.[0-9]+)?");
}
 
Code: Java

Virt 08.09.2012 19:02

Re: Исключение и отсортировка цикла
 
Допустем я вот сделал вот так и у меня получилось:
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;
        }
Code: Java
На сколько актуально будет данная конструкция?

Добавлено через 2 минуты
Цитата:

Сообщение от Java-man (Сообщение 225365)
Можно еще преобразовывать строку в инт и ловить ошибку:

public boolean isInteger(String str)
{
   try
   {
      Integer.parseInt(str);
      return true;
   }
   catch(Exception e)
   {
      return false;
   }
}
 
Code: Java

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

public boolean isInteger(String str)
{
   return str.matches("(-|\\+)?[0-9]+(\\.[0-9]+)?");
}
 
Code: Java

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

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


Текущее время: 23:22. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot