Задачка

Тема в разделе "Java", создана пользователем Louis, 28 апр 2008.

  1. Louis

    Louis Гость

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

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

    Мое решение:

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

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

    public int getN(){
    return n;
    }
    }
    Код (Text):
    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];
    }
    }
    [codebox]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.length() >= max){
    max = ArrayCreator.array.length();
    nom=i;
    }
    }
    }

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

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

    static int getMin(){
    return min;
    }

    static int getNom1(){
    return nom1;
    }

    }[/codebox]

    [codebox]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);
    }

    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]);

    }

    }[/codebox]

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

    Yason Гость

    1. Для оформления исходника правильно использовать тег code.
    2. Класс Nnn совершенно лишний, это видно даже по тому, что для него нельзя придумать разумного имени.
    3. У Вас все поля классов объявлены static, что делает их, по сути, глобальными переменными - это есть плохо, т.к. вся работа ложится на Main.main().
    4. Имхо, понятнее было бы примерно вот так:
    Код (Text):
    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 строк?).
     
Загрузка...
Похожие Темы - Задачка
  1. Hehabr
    Ответов:
    1
    Просмотров:
    482
  2. dmalsh
    Ответов:
    1
    Просмотров:
    1.004
  3. varenbko
    Ответов:
    0
    Просмотров:
    1.040
  4. Fillya
    Ответов:
    0
    Просмотров:
    1.091
  5. ferrum
    Ответов:
    1
    Просмотров:
    1.118

Поделиться этой страницей