如何打印具有特定长度及其倍数的所有单词

时间:2019-03-19 20:03:05

标签: java arrays arraylist

如果我输入大于2的数字,我需要打印数组中所有给定的单词。例如,如果我给出数字4,它还应该打印乘以4的单词长度,因此它应该打印:

    长度为4的
  • 个单词 长度为8的单词 等

我在代码的那一部分遇到问题。

这是我的代码:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

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

        ArrayList<String> words = new ArrayList<String>();


        System.out.println("Type a word: ");
        String word = reader.nextLine();

        while (!(word.equals("STOP"))) {
            words.add(word);
            System.out.println("Type a word: ");
            word = reader.nextLine();
        }

        if (word.equals("STOP"))
            for (String print : words)
                System.out.println(print);

        System.out.println("Give a number: ");
        int number = reader.nextInt();

        while (number < 2) {
            System.out.println("Give a number: ");
            number = reader.nextInt();
        }


        if (2 < number)
            for (int i = number; word.length() == i; i = number * number) {
                for (String printer : words)
                    System.out.println(printer);
            }

        }
    }

2 个答案:

答案 0 :(得分:0)

最后一部分替换为

words.sort(Comparator.comparing(String::length));       

if (2 < number) {
    int limit = number;
    for (String w : words) {
        if (w.length() > limit) {
            limit += number;
        }      
        if (w.length() == limit) {
            System.out.println(w);
        }
    }
}

根据长度对单词进行排序,然后循环遍历单词数组,将单词长度与number或数字倍数进行比较,每次发现更长的单词时该数字就会增加。

答案 1 :(得分:0)

首先,您需要遍历单词集合,然后检查每个单词的长度(如果它是所需长度的倍数)。这里只是一些伪代码,因为我的Java有点生锈。我确定您可以将其翻译成Java。

for each (word in words){
    if (word.length mod length == 0)
        print(word)
}

其中a mod b是取模运算符,是整数除法a/b的余数