Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
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
|
|
![]() |
|
|
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
|
|
![]() |
|
Текстовая версия | Сейчас: 16:05:2008 - 17:27 |