因此,我的代码用于家庭作业,其中用户输入了一个句子(字符串),我需要搜索字符串并返回最小的单词。但是,必须在字符串的第一个位置输入数字。例如:“ 4这是什么”。输出应为“ IS”,并忽略该数字。我弄清楚如何忽略该数字的唯一方法是使循环跳过该数字所在的第一个位置。它本身可以工作,但是只要我将其放入程序的其余部分,它就会停止工作。无论如何,可以使该程序更清洁吗?

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    // Lexicographically smallest word
    String TheSentence = sc.nextLine();
    String[] myWords = TheSentence.split(" ");
    int shortestLengths, shortestLocation;
    shortestLengths = (myWords[1]).length();
    shortestLocation = 1;
    for (int i = 1; i < myWords.length; i++) {
        if ((myWords[i]).length() < shortestLengths) {
            shortestLengths = (myWords[i]).length();
            shortestLocation = i;
        }
    }
    System.out.println(myWords[shortestLocation]);
}

最佳答案

在您的for循环内(应该从i = 0开始),添加如下代码:

try {
  double value = Double.parseDouble(myWords[i]);
} catch (NumberFormatException e) {
  // add the rest of your code here
}


这个想法是您尝试将单词转换为数字,如果失败,则表示它不是数字,因此可以在单词上使用长度逻辑。

07-24 13:47