gpt4 book ai didi

java - 我怎样才能退出这个循环?

转载 作者:行者123 更新时间:2023-12-01 20:57:21 27 4
gpt4 key购买 nike

此代码尝试接受来自用户的 key 并将它们存储到字符串数据数组中。在程序的后面,每个键的值都以某种特定的格式显示。

首先,我希望当用户输入为空/下一行时该循环结束/退出。我不想使用任何 EOF 字符或字符串退出循环。

我对之前的问题/解决方案进行了一些搜索,但对我的案例不起作用。需要帮助解决这个问题或任何其他替代方案是最受欢迎的。

提前致谢!

class DictionaryAndMap{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int len = sc.nextInt();
Map<String, Integer> mp = new HashMap<String, Integer>();
String name;
int phone;
for(int i=0; i<len; i++){
name = sc.next();
phone = sc.nextInt();
mp.put(name, phone);
}
int i=0;
String arr1[] = new String[10];
String nam;

// I couldn't exit out of this loop
while(sc.hasNext()){
nam = sc.next();
if(nam!=null && !nam.trim().isEmpty()){
arr1[i] = nam;
i++;
}
else{
break;
}
}

// iterating through the array to find the search inputs
for(String j: arr1){
if(mp.containsKey(arr1[j])){
System.out.println(j+"="+mp.get(j));
}else{
System.out.println("Not found");
}
}
}
}

P.S. 即使输入为空/null/"",hasNext() 值也不会更改为 false,因此 while 循环永远不会结束。如何使 hasNext() 检测到任何这些空输入数据,从而使其退出循环?

最佳答案

读取后检查输入是否为空:

while (scanner.hasNextLine()) {
nam = sc.nextLine();
if (nam.trim().isEmpty())
break;
...

然后,您可以通过仅将 else if 替换为 else 并删除最后一个 else 来简化其余部分。

关于java - 我怎样才能退出这个循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42104310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com