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

Форум администраторов игровых серверов (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 08:11

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

/**
 * Created by IntelliJ IDEA.
 * User: Катя
 * Date: 07.09.12
 * Time: 12:46
 * To change this template use File | Settings | File Templates.
 */
public abstract class {
    
int _h 0;

    protected 
M(){
        return;
    }

    
/**
    *  Конструктор, выполняем вычисление и записываем результат в поле _h = ;
    **/
    
protected M(int h){
        
double v h*Math.sqrt(h);
        
_h = (int)v;
    }
    
/**
    * возвращаем результат вычисление
    * */
    
protected int Mera(int c) {
        return 
_h c;
    }

    
/**
    * обязательный мотод для всех наледников, выводит на экран сообщение с результатом.
    * */
    
protected abstract void setMess(int c);


PHP код:

/**
 * Created by IntelliJ IDEA.
 * User: Катя
 * Date: 07.09.12
 * Time: 12:51
 * To change this template use File | Settings | File Templates.
 */
public class extends {

    
String _vd;

    protected 
c(int hString vd) {
        
super(h);
        
_vd vd;
    }

    protected 
int Strel(int c){
        
double k Math.sqrt(Mera(c));
        return (int)
k;
    }

    
/*
    * Переопределяем метод от родителя и выводим на экран сообщение с результатом
    * */
    
@Override
    
protected void setMess(int c) {
        
System.out.println("Результат: " this._vd " " c);
    }


PHP код:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;

/**
 * Created by IntelliJ IDEA.
 * User: Катя
 * Date: 07.09.12
 * Time: 12:43
 * To change this template use File | Settings | File Templates.
 */
public class Main {

    public static 
void main(String args[]) throws IOException {
        
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));

        
System.out.print("Введите значение: ");
        
String resault read.readLine();
        
/*
        * прописать проверку, на ввод данных - это число?
        * или лучше исключением?
        * */


        
Random v = new Random();

        
/*
        *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

                отсортировать результат цикла на повторяющиеся данные
                и вывести на экран
             */
        
}
    }


Здравствуйте!

Суть всего: это мое первое кодирование.
Хотелось бы уточнить - на сколько он профессиональный?

И пару вопросов в классе main:
PHP код:

System.out.print("Введите значение: ");
        
String resault read.readLine();
        
/*
        * прописать проверку, на ввод данных - это число?
        * или лучше исключением?
        * */ 

как лучше будет это сделать?


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

                отсортировать результат цикла на повторяющиеся данные
                и вывести на экран
             */
        


я так полнял - это в через массив ? или Вы что-то посоветуете дургое?

Спасибо!!!

JavaMan 08.09.2012 16:13

Re: Исключение и отсортировка цикла
 
Ответы на все эти дебильные замечательные вопросы можно найти в гугле.

Zubastic 08.09.2012 16:24

Re: Исключение и отсортировка цикла
 
off:
Свернуть ↑Развернуть ↓

xolseg 08.09.2012 16:39

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

Сообщение от Zubastic (Сообщение 225316)
off:
Свернуть ↑Развернуть ↓

Кодим на html? :redlol:

Zubastic 08.09.2012 16:59

Re: Исключение и отсортировка цикла
 
Причем раздел явы :redlol:

xolseg 08.09.2012 17:02

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

Сообщение от Zubastic (Сообщение 225327)
Причем раздел явы :redlol:

Фу тролль, иди в другую тему! :slowpoke:

Ashe 08.09.2012 17:03

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

Сообщение от Java-man (Сообщение 225314)
Ответы на все эти дебильные замечательные вопросы можно найти в гугле.

В кои-то веки адекватный новичок создал тему в подходящем разделе и нормально попросил совет, причём здесь Ваши ремарки? ЧСВ over 100500? Не хотите/можете помочь - пройдите мимо топика и оставьте свой пафос при себе.

Aquanox 08.09.2012 18:17

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

Сообщение от Virt (Сообщение 225254)
Здравствуйте!

Суть всего: это мое первое кодирование.
Хотелось бы уточнить - на сколько он профессиональный?

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

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


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

Virt 08.09.2012 18:18

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

Сообщение от Ashe (Сообщение 225329)
В кои-то веки адекватный новичок создал тему в подходящем разделе и нормально попросил совет, причём здесь Ваши ремарки? ЧСВ over 100500? Не хотите/можете помочь - пройдите мимо топика и оставьте свой пафос при себе.

Ого, спасибо за поддерджку!

Ashe 08.09.2012 18:28

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

Сообщение от Virt (Сообщение 225254)

И пару вопросов в классе main:
PHP код:

System.out.print("Введите значение: ");
        
String resault read.readLine();
        
/*
        * прописать проверку, на ввод данных - это число?
        * или лучше исключением?
        * */ 

как лучше будет это сделать?

Здесь можно использовать 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

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 минуты
И теперь настала истина: при большом потоке, что будет работать быстрее и занимать меньше памяти?=))


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

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