Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2011, 23:11   #1
papikyandgan
Пользователь
 
Регистрация: 20.09.2011
Сообщений: 17
По умолчанию оптимизация программы по java

уважаемые помогите упростить программу:надо сделать чтобы меньше памяти использовалось
Вот условие:Перед строкой содержащей слово, являющееся последним словом по алфавиту во всем тексте, вставить строку “Last word!”

public static void main(String[] args) {
String[] str = new String[25];
String slovo;
int count = 0;
int pos = 0;
Scanner cin = new Scanner(System.in);
System.out.print("Введите текст:\n");
for (int i = 0; i < 25; i++, count++) {
str[i] = cin.nextLine();
boolean flag = str[i].equals("");
if (flag == true) {
break;
}
}
StringTokenizer c = new StringTokenizer(str[0], " ");
int h = c.countTokens(), a = 0;
String[] word1 = new String[h];
while (c.hasMoreTokens()) {
word1[a] = c.nextToken();
a++;
}


for (int i = 1; i < count; i++) {
StringTokenizer s = new StringTokenizer(str[i], " ");
int p = s.countTokens(), k = 0;
String[] word = new String[p];
while (s.hasMoreTokens()) {
word[k] = s.nextToken();
k++;
}
String m1;
m1 = word[0];
for (int l = 1; l < k; l++) {
int is = m1.compareTo(word[l]);
if (is < 0) {
m1 = word[l];
}
}
if ((m1.compareTo(m1)) < 0) {
slovo = m1;
pos = i;
}
}
String ptr = "Last word";
String[] str1 = new String[count + 1];
for (int i = 0; i < pos; i++) {
str1[i] = str[i];
}
str1[pos] = ptr;
for (int i = pos + 1; i < count + 1; i++) {
str1[i] = str[i - 1];
}
for (int v = 0; v < count + 1; v++) {
System.out.println(str1[v]);
}
}
}
papikyandgan вне форума Ответить с цитированием
Старый 27.09.2011, 07:28   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
boolean flag = str[i].equals("");
if (flag == true) {
break;
}
Здесь можно сразу исключить flag
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 27.09.2011, 17:46   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Во-первых, используйте тег [CODE] (кнопка с символом решётки - #)
Во-вторых, чем продиктована потребность в такой экономии памяти? Тут ведь её всего ничего используется.
В-третьих, StringTokenizer не рекомендуется к использования, как устаревший класс, вместо него рекомендуют использовать метод split класса String, либо java.util.regex.
В-четвёртых, использование Scanner для простого чтения строк слегка нерационально, в данном случае можно воспользоваться BufferedReader или Console из java.io.
Ещё можно использовать ArrayList из java.util, что значительно упростит работу с массивом:
Код:
import java.util.ArrayList;
import java.io.InputStreamReader;
import java.io.BufferedReader;
 
class Program {
  public static void main(String[] args) throws Exception {
    ArrayList<String> lines = new ArrayList<String>();
    BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
 
    while (true) {
      String line = cin.readLine();
      if (line == null || line.isEmpty())
        break;
      lines.add(line);
    }
 
 
    String lastWord = "";
    int lastWordLine = 0;
 
    for (int i = 0; i < lines.size(); i++) {
      String[] words = lines.get(i).split(" ");
      
      for (String word : words) {
        if (lastWord.compareToIgnoreCase(word) < 0) {
          lastWord = word;
          lastWordLine = i;
        }
      }
    }
 
    lines.add(lastWordLine, "Last word!");
 
    System.out.println("Alphabetically last word is \"" + lastWord + "\"\n");
 
    for (String line : lines)
      System.out.println(line);
  }
}
netrino вне форума Ответить с цитированием
Старый 27.09.2011, 19:22   #4
papikyandgan
Пользователь
 
Регистрация: 20.09.2011
Сообщений: 17
По умолчанию

Спосибо большое!!!
papikyandgan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
оптимизация программы Arsenx777 Работа с сетью в Delphi 1 28.08.2011 14:00
Оптимизация программы 0479 Помощь студентам 7 09.03.2011 17:15
Оптимизация программы Lenya Помощь студентам 2 05.01.2011 18:56
Оптимизация программы!!! $T@LKER Общие вопросы Delphi 10 08.08.2010 21:23