以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。
输入格式:
输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过10个英文字母的非空单词,以回车结束。一个英文句点.标志输入的结束,这个符号不算在点赞名单里。
输出格式:
根据点赞情况在一行中输出结论:若存在第2个人A和第14个人B,则输出“A and B are inviting you to dinner...”;若只有A没有B,则输出“A is the only one for you...”;若连A都没有,则输出“Momo... No one is for you ...”。
输入样例1:
GaoXZh
Magi
Einst
Quark
LaoLao
FatMouse
ZhaShen
fantacy
latesum
SenSen
QuanQuan
whatever
whenever
Potaty
hahaha
.
输出样例1:
Magi and Potaty are inviting you to dinner...
输入样例2:
LaoLao
FatMouse
whoever
.
输出样例2:
FatMouse is the only one for you...
输入样例3:
LaoLao
.
输出样例3:
Momo... No one is for you ...
解题思路
我们可以使用一个数组(或列表)来存储这些名字。然后,我们检查这个列表的长度来确定如何生成输出。
如果列表长度至少为 14,那么我们输出第 2 个和第 14 个点赞的人的名字。 如果列表长度等于 2 或者更多但少于 14,那么我们只输出第 2 个点赞的人的名字。 如果列表长度小于 2,那么输出 "Momo... No one is for you ...”。
解题过程中遇到的问题
- 遇到以什么输入结束的情况,可以使用Scanner.hasNextLine()
Scanner scanner = new Scanner(System.in);
ArrayList<String> likes = new ArrayList<>();
while (scanner.hasNextLine()) {
String name = scanner.nextLine();
if (name.equals(".")) {
break;
}
likes.add(name);
}
- arraylist.get(int index)是以0开头为索引的。
代码
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<String> likes = new ArrayList<>();
while (scanner.hasNextLine()) {
String name = scanner.nextLine();
if (name.equals(".")) {
break;
}
likes.add(name);
}
if (likes.size() >= 14) {
System.out.println(likes.get(1) + " and " + likes.get(13) + " are inviting you to dinner...");
} else if (likes.size() >= 2) {
System.out.println(likes.get(1) + " is the only one for you...");
} else {
System.out.println("Momo... No one is for you ...");
}
}
}