2012-09-08 61 views
1

我正在尝试查找用户输入字符串中的最小单词。这是我到目前为止有:在Java中查找字符串中的最小单词

import java.util.*; 
public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 

    String myText = sc.next(); 
    String[] myWords = myText.split(" "); 
    int shortestLength,shortestLocation; 

    shortestLength=(myWords[0]).length(); 

    shortestLocation=0; 

    for (int i=1;i<myWords.length;i++) { 
     if ((myWords[i]).length() < shortestLength) { 
      shortestLength=(myWords[i]).length(); 
      shortestLocation=i; 
     } 
    } 
    System.out.println(myWords[shortestLocation]); 
} 

如果我进入"SMALLEST WORD SHOULD BE A",输出应为A,但它只是给我的字符串的第一个字。有任何想法吗?

+0

很高兴你找到了你的答案!记得阅读Javadocs,你会发现你使用了错误的方法:D –

回答

5

你的算法是好的,但是,而不是使用next()

String myText = sc.next(); 

这将只读取一个道理,即第一字,使用nextLine(),这将读取整个行:

String myText = sc.nextLine(); 
+0

非常感谢!我更快速的问题:如果我把一个数字放入字符串中,它会给我数字作为最短的值。无论如何要忽略放入字符串的数字,以便它只读取字母和单词? – Eric

+0

@Eric:是的,要测试一个字符串是否是数字,可以使用if(myWords [i] .matches(“\\ d +”)){// number}'。 '\\ d +'匹配一个或多个数字。 –

+0

谢谢你一堆。很有帮助 – Eric

0

采取完整的字符串,你必须使用的方法

sc.nextLine(); 

因此它会占用完整的字符串。

相关问题