用java 生成代码:生成代码先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车结束,每个字符串不多于一百个字符。 如果在输入过程中输入的一个字符串为“stop”,也结束输入。 然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序结果输出字符串。如果存在多个字符串长度相同,则按照原始输入顺序输出。 输入格式: 字符串的个数,以及该组字符串。每个字符串以‘\n’结束。如果输入字符串为“stop”,也结束输入. 输出格式: 可能有多组测试数据,对于每组数据, 将输入的所有字符串按长度由小到大排序输出(如果有“stop”,不输出“stop”)。 输入样例: 4 faeruhyytrjh tjytj hsrthts hjnshtgfhs stop 3 htrskbns bsartanjsf tyjndyt nsr jj jtey 输出样例: faeruhyytrjh tjytj hsrthts hjnshtgfhs htrskbns nsr jj jtey bsartanjsf tyjndyt
时间: 2024-03-10 21:51:16 浏览: 62
以下是 Java 代码实现:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
if (n == 0) {
break;
}
scanner.nextLine(); // 将换行符读取掉
List<String> strings = new ArrayList<>();
for (int i = 0; i < n; i++) {
String s = scanner.nextLine().trim();
if (s.equals("stop")) {
break;
}
strings.add(s);
}
Collections.sort(strings, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if (s1.length() == s2.length()) {
return strings.indexOf(s1) - strings.indexOf(s2);
}
return s1.length() - s2.length();
}
});
for (String s : strings) {
System.out.println(s);
}
}
scanner.close();
}
}
```
解析:
首先创建一个 `Scanner` 对象来读取输入。接着进入一个死循环,不断读取输入并处理。每次读取一个整数 `n`,表示需要输入 `n` 个字符串。然后循环输入这 `n` 个字符串,如果输入的字符串为 “stop” 就跳出循环。将输入的字符串存放在 `List` 集合 `strings` 中。接着对 `strings` 集合进行排序,排序规则为:先按字符串的长度从小到大排序,如果长度相同则按照原始输入顺序排序。由于需要同时记录字符串的长度和原始输入顺序,因此不能简单地使用 `Collections.sort()` 函数,而是需要自定义比较器。最后输出排序后的字符串即可。循环输入和输出的过程需要用 `hasNext()` 函数来判断是否还有输入,以防止程序运行出错。另外,在读取完整数后需要使用 `nextLine()` 函数将换行符读取掉。最后记得关闭 `Scanner` 对象以释放资源。
阅读全文