2017-01-24 3 views
0

У меня есть задание, оно выглядит довольно легко, но я не могу понять, как его решить.Последнее слово/предложение на массиве Java

Он говорит:

  • а) Попросите пользователя: Сколько слов/предложений вы хотите написать (по крайней мере 5)? (Использование в то время как петля)
  • б) Использование для петлю, чтобы пользователь записать слова/фразы
  • с) после того, как пользователя написаны слова/фразы, выход которого слово/предложение приходит последним в алфавитном порядке (с использованием .compareTo() метод)

Это то, что я придумал:

import java.util.Scanner; 
import java.lang.String; 
import java.util.Arrays; 

public class LastString { 
public static void main (String [] args){ 
Scanner input = new Scanner (System.in); 

final short MIN_NUM = 2; 
int num = 0; 
int count = 0; 
String [] sentence = new String [0]; 
String last = ""; 

while (num < MIN_NUM){ 
    System.out.println("How many words/sentences do you want to put? " + "\t\t\t\t\t\t\t\t --- at least " + MIN_NUM); 
    num = input.nextInt(); 
    sentence = new String [num]; 
} 


for (int i = 0; i < num ; i++) { 
    System.out.println("\nWrite a word/sentence" + "\t\t\t\t\t\t\t\t\t --- (Time: " + (i+1) + ")"); 
    sentence [i] = input.nextLine(); 
    System.out.println("The word/sentence is: " + sentence[i]); 
} 

int i = 0; 
int max; 

for (i=0;i<num-1 ;i++) { 
    if(sentence[i].compareTo(sentence[i+1]) > 0){ 
    last = sentence[i]; 
    count ++; 
    }else if (sentence[i].compareTo(sentence[i+1]) < 0) { 
     last = sentence[i+1]; 
     count++; 
    } 
} 

System.out.println("\n\n------------" + 
        "\nLast word/sentence is: " + last); 



System.out.println(Arrays.toString(sentence)); 

} 

} 

Я компилирую и запускаю. У меня есть две проблемы:

  1. nextLine >>> это skiping первое предложение

  2. Я не знаю, как сделать алгоритм для вычисления, какое слово/предложение имеет наибольшее значение или, используя метод compareTo(), слово/предложение которого имеет значение> 0 по сравнению с каждым другим значением в массиве.

спасибо.

+0

Что определяющим фактором может быть применен к "предложения" в сортировать по алфавиту? – CraigR8806

+0

Я не понимаю вопроса. Если вы имеете в виду нижний регистр в верхнем регистре, это не имеет значения. Это слово или предложение. –

+0

Ответ на вопрос Q 1: 'num = input.nextInt();' принимает число как вход, но также не потребляет новую строку, и, следовательно, 'nextLine' потребляет пустую новую строку ... вы можете использовать 'input.nextLine' также получить первое число вместо' num = input.nextInt(); ', прочитав строку, затем проанализируя значение int как' num = Integer.parseInt (input.nextLine()); ' –

ответ

0

Ответа на Q1: num = input.nextInt(); принимает число в качестве входных данных, но это также не потребляет новую строку, и, следовательно, nextLine потребляет пустую новую строку ... Вы можете использовать input.nextLine также получить первый номер вместо num = input.nextInt();, прочитав строки, то разбор значения INT, как num = Integer.parseInt(input.nextLine());

Ответ на Q2:

вы повторно установить значение last каждый раз, но не сравнить значение следующего крупнейшего кандидата с last перед повторным назначением последнего ...

, например, посмотрите на следующее:

for (int i = 0; i < num - 1; i++) { 
    String thisLast = ""; 
    if (sentence[i].compareTo(sentence[i + 1]) > 0) { 
     thisLast = sentence[i]; 
     count++; 
    } else if (sentence[i].compareTo(sentence[i + 1]) < 0) { 
     thisLast = sentence[i + 1]; 
     count++; 
    } 

    if (thisLast.compareTo(last) > 0) 
     last = thisLast; 

} 
+1

Вау! Так просто! Большое спасибо, сэр. Оно работает. Благодарность. –

0

это решит вашу проблему ....

int count = 0; 
    String [] sentence = new String[6]; 
    String last = ""; 
    for (int i = 0; i < num ; i++) { 
     System.out.println("\nWrite a word/sentence" + "\t\t\t\t\t\t\t\t\t ---  (Time: " + (i+1) + ")"); 
     sentence [i] = input.nextLine(); 
     count++; 
     if(count >= 2){ 
      if(sentence[i].compareTo(last) > 0){ 
       last = sentence [i] ; 
      } 
     }else{ 
      last = sentence [i]; 
     } 
     System.out.println("The word/sentence is: " + sentence[i]); 

}

Смежные вопросы