如果我输入大于2的数字,我需要打印数组中所有给定的单词。例如,如果我给出数字4,它还应该打印乘以4的单词长度,因此它应该打印:
我在代码的那一部分遇到问题。
这是我的代码:
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);
}
}
}
答案 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
的余数