Задачка

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

  1. Louis

    Louis Гость

    Репутация:
    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];
    }
    }
    [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 Гость

    Репутация:
    0
    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 строк?).
     
Загрузка...
Похожие Темы - Задачка
  1. Hehabr
    Ответов:
    1
    Просмотров:
    617
  2. dmalsh
    Ответов:
    1
    Просмотров:
    1.115
  3. varenbko
    Ответов:
    0
    Просмотров:
    1.118
  4. Fillya
    Ответов:
    0
    Просмотров:
    1.173
  5. ferrum
    Ответов:
    1
    Просмотров:
    1.176

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