Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Задачка, Ткните носом
Louis
Вставить ник
сообщение 28:04:2008, 14:24
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 13
Регистрация: 25:12:2007
Пользователь №: 14 455



Репутация: - 0 +


Условия задачи:

Ввести n строк с консоли, найти самую короткую и самую длинную строки. Вывести строки и их длину.

Мое решение:

Код
import java.io.*;
public class Nnn {
static int n;

public static void setN(int value){
    n=value;
}

public int getN(){
return n;
}
}


Код
public class ArrayCreator {
static String array [] = new String [Nnn.n];

public static void setElement(String value, int i){
    array[i]=value;
}

public String getElement(int i){
    return array[i];
}
}


CODE
public class Multiplicator {
static int min=ArrayCreator.array[0].length();
static int max=0;
static int nom;
static int nom1;

static void setMax(){
for(int i=0; i<=ArrayCreator.array.length-1; i++){
if(ArrayCreator.array[i].length() >= max){
max = ArrayCreator.array[i].length();
nom=i;
}
}
}

static void setMin(){
for (int i=0; i<=ArrayCreator.array.length-1; i++){
if(ArrayCreator.array[i].length() <= min){
min=ArrayCreator.array[i].length();
nom1=i;
}
}
}

static int getMax(){
return max;
}
static int getNom(){
return nom;
}

static int getMin(){
return min;
}

static int getNom1(){
return nom1;
}

}


CODE
import java.io.*;
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
BufferedReader in = new BufferedReader (new InputStreamReader (System.in));
try{
System.out.println("Vvedite n");
String str = in.readLine();
Integer value = new Integer(str).intValue();
Nnn.setN(value);
}catch (IOException e){System.err.println("error "+e);}

for(int i=0; i<=Nnn.n-1; i++){
BufferedReader in1 = new BufferedReader (new InputStreamReader (System.in));
try{
System.out.println("Vvedite stroky ");
String str = in.readLine();
ArrayCreator.setElement(str,i);
}catch (IOException e){System.err.println("error "+e);}
}
System.out.println("\n");
System.out.println("\n");

for (int i=0; i<=ArrayCreator.array.length-1; i++){
System.out.println(ArrayCreator.array[i]);
}

System.out.println("\n");

Multiplicator.setMax();
Multiplicator.setMin();
System.out.println(Multiplicator.max+" stroka = "+ArrayCreator.array[Multiplicator.nom]);
System.out.println(Multiplicator.min+" stroka = "+ArrayCreator.array[Multiplicator.nom1]);

}

}


все работает задача решается!
Поскольку я только начал изучать Java меня интересуеть мнение более опытных программеров - Что не так.. Что можно было сделать лучше... (Создание классов, методов и пр.)
Очень нужна Ваша оценка.

Сообщение отредактировал European - 29:04:2008, 06:26
Причина редактирования: Установка тегов кода
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 1)
Yason
Вставить ник
сообщение 28:04:2008, 17:49
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 100
Регистрация: 27:02:2004
Пользователь №: 296



Репутация: - 5 +


1. Для оформления исходника правильно использовать тег code.
2. Класс Nnn совершенно лишний, это видно даже по тому, что для него нельзя придумать разумного имени.
3. У Вас все поля классов объявлены static, что делает их, по сути, глобальными переменными - это есть плохо, т.к. вся работа ложится на Main.main().
4. Имхо, понятнее было бы примерно вот так:
Код
public static void main(String[] args) {
    StringList strings = StringListReader.readStringsFromConsole();

    String maxStr = StringList.getLongestString();
    String minStr = StringList.getShortestString();

    System.out.println(maxStr+" - "+maxStr.length()+" chars");
    System.out.println(minStr+" - "+minStr.length()+" chars");
}

где StringList - наследник от java.util.Vector, заточенный для работы со строками, и с парой дополнительных методов, которые возвращают самую длинную и самую короткую строки из списка.
StringListReader - класс со статическим методом readStringsFromConsole(), который (как говорит имя) считывает строки с консоли, и возвращает их в виде StringList.
Достоинство такого подхода, по сравнению с Вашим - возможность повторного использования классов StringListReader и StringList в других программах (Вам же не в последний раз нужно считать n строк?).
Подняться вверх 
 
Сообщение #2


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 16:05:2008 - 17:27
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net