2013-05-24 1 views
2

Целью является получение предложения от пользователя, его токенизация, а затем предоставление информации только о первых трех словах (само слово, длина, а затем среднее значение первого 3 слова). Я не знаю, как превратить маркеры в строки. Мне просто нужно некоторое руководство - не знаю, как действовать дальше. У меня это до сих пор:Используйте StringTokenizer для подсчета количества слов и символов в словах

public static void main(String[] args) { 

    String delim = " "; 

    String inSentence = JOptionPane.showInputDialog("Please enter a sentence of three or more words: "); 

    StringTokenizer tk = new StringTokenizer(inSentence, delim); 

    int sentenceCount = tk.countTokens(); 


    // Output 
    String out = ""; 
    out = out + "Total number of words in the sentence: " +sentenceCount +"\n"; 

    JOptionPane.showMessageDialog(null, out); 


} 

Я бы очень признателен за любое руководство!

ответ

1

Если вы просто хотели, чтобы получить первые 3 лексемы, то вы могли бы сделать что-то вроде этого:

String first = tk.nextToken(); 
String second = tk.hasMoreTokens() ? tk.nextToken() : ""; 
String third = tk.hasMoreTokens() ? tk.nextToken() : ""; 

С должно быть довольно легко вычислить другие требования

+0

Спасибо! Я знал, что должен использовать hasMoreTokens(), но я не знал, как это сделать. – Smeaux

0

отменными получить отдельные строки с использованием nextToken().

while (tk.hasMoreTokens()) { 
    System.out.println(st.nextToken()); 
} 

Вы, безусловно, можете делать что-либо еще, кроме как распечатывать их. Если вам нужны только три первых токена, вы можете не использовать цикл while, но несколько простых операторов if.

1
public static void main(String[] args) { 

    String delim = " "; 

    String inSentence = JOptionPane.showInputDialog("Please enter a sentence of three or more words: "); 

    StringTokenizer tk = new StringTokenizer(inSentence, delim); 

    int sentenceCount = tk.countTokens(); 

    // Output 
    String out = ""; 
    out = out + "Total number of words in the sentence: " +sentenceCount +"\n"; 

    JOptionPane.showMessageDialog(null, out); 

    int totalLength = 0; 
    while(tk.hasMoreTokens()){ 
     String token = tk.nextToken(); 
     totalLength+= token.length(); 
     out = "Word: " + token + " Length:" + token.length(); 
     JOptionPane.showMessageDialog(null, out); 
    } 

    out = "Average word Length = " + (totalLength/3); 
    JOptionPane.showMessageDialog(null, out); 
} 
+1

Это действительно хороший ответ, но я не думаю, что его хорошая идея дать полный ответ, поскольку вопрос с ОП кажется домашней работой. Кроме того, ОП просит руководства. – Smit

+0

Он также пропускает требования, так как он хотел только среднего значения первых трех слов, а средний будет неправильным, потому что он перебирает все слова, но только делится на 3 для среднего. Либо разбить цикл на 3, либо разделить на предложениеCount. – cmbaxter

+0

Редактировать: она * хотела только ... – Smeaux