Java 我怎样才能退出这个循环?
此代码试图接受用户的密钥并将其存储到字符串数据数组中。在程序的后面,每个键的值都以某种特定的格式显示 首先,我希望在用户输入为空/nextline时结束/退出此循环。我不想使用任何EOF字符或字符串退出循环 我对以前的SO问题/解决方案进行了一些搜索,但在我的案例中不起作用。需要帮助解决这个问题或任何其他选择是最受欢迎的 提前谢谢Java 我怎样才能退出这个循环?,java,loops,collections,hashmap,iteration,Java,Loops,Collections,Hashmap,Iteration,此代码试图接受用户的密钥并将其存储到字符串数据数组中。在程序的后面,每个键的值都以某种特定的格式显示 首先,我希望在用户输入为空/nextline时结束/退出此循环。我不想使用任何EOF字符或字符串退出循环 我对以前的SO问题/解决方案进行了一些搜索,但在我的案例中不起作用。需要帮助解决这个问题或任何其他选择是最受欢迎的 提前谢谢 class DictionaryAndMap{ public static void main(String[] args){ Scanner sc =
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");
}
}
}
}
类字典和映射{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int len=sc.nextInt();
Map mp=新的HashMap();
字符串名;
国际电话;
对于(int i=0;i只需在阅读后检查输入是否为空:
while (scanner.hasNextLine()) {
nam = sc.nextLine();
if (nam.trim().isEmpty())
break;
...
然后,您可以通过将else if
仅替换为else
来简化其余部分,并删除最后一个else只需在阅读后检查输入是否为空:
while (scanner.hasNextLine()) {
nam = sc.nextLine();
if (nam.trim().isEmpty())
break;
...
然后,您可以通过仅将else if
替换为else
来简化其余部分,并删除最后一个else您必须检查字符串是否为空或空,以使控件脱离while循环
nam=sc.next();
if(name==null || name.isEmpty()){
break; //break the loop
}
您必须检查字符串是否为空或null,以使控件脱离while循环
nam=sc.next();
if(name==null || name.isEmpty()){
break; //break the loop
}
此代码可能对您有所帮助。您无需检查!mp.containsKey(nm)
此代码可能对您有所帮助。您无需检查!mp.containsKey(nm)
我想这就是你要找的代码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String nam;
Map<String, Objects> mp = new HashMap<>();
String[] arr1 = new String[1024];
int i = 0;
nam = sc.nextLine();
while (nam.length() > 0) {
if (mp.containsKey(nam)) {
arr1[i] = nam;
i++;
} else {
System.out.println("Not found");
}
nam = sc.nextLine();
}
}
publicstaticvoidmain(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
串南;
Map mp=新的HashMap();
字符串[]arr1=新字符串[1024];
int i=0;
nam=sc.nextLine();
while(nam.length()>0){
if(议员康纳斯基(南部)){
arr1[i]=nam;
i++;
}否则{
System.out.println(“未找到”);
}
nam=sc.nextLine();
}
}
循环将通过用空字符串按enter键终止。我想这就是您要查找的代码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String nam;
Map<String, Objects> mp = new HashMap<>();
String[] arr1 = new String[1024];
int i = 0;
nam = sc.nextLine();
while (nam.length() > 0) {
if (mp.containsKey(nam)) {
arr1[i] = nam;
i++;
} else {
System.out.println("Not found");
}
nam = sc.nextLine();
}
}
publicstaticvoidmain(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
串南;
Map mp=新的HashMap();
字符串[]arr1=新字符串[1024];
int i=0;
nam=sc.nextLine();
while(nam.length()>0){
if(议员康纳斯基(南部)){
arr1[i]=nam;
i++;
}否则{
System.out.println(“未找到”);
}
nam=sc.nextLine();
}
}
循环将通过用空字符串点击enter来终止。如果语句是多余的,则否则将是多余的。每当第一个如果为false时,它将始终是true
。我确实遇到了该线程,但除了使用EOF语句之外,没有其他解决方案吗?有没有至少我可以跟踪的方法\n通过用户输入或类似的方式?@Akhil可能对使用hasNext()
有帮助。^这几乎指出了我的问题……可能是我应该尝试另一种方法:)如果
语句是多余的,else。当第一个if
为false
时,它总是true
。我确实遇到了这个线程,但除了使用EOF语句之外,没有其他解决方法吗?有没有一种方法至少可以从用户输入或类似的东西中跟踪\n?@Akhil可能是一个解释使用hasNext()
可能会有帮助。^这几乎指出了我的问题…可能是我应该尝试另一种方法:)这不可能。我使用!mp.containsKey(nam)只是因为我可以区分空/空输入(mp.containsKey(nam)&!nam.trim().isEmpty())在您的条件中添加此选项您真正想要做的是??要清楚,我只想在用户输入为“空”时退出while循环,或者在一个简单的“输入按钮”上按,然后按add break;否则这将不起作用。我使用!mp.containsKey(nam)只是因为我可以区分空/空inputif(mp.containsKey(nam)&&&!nam.trim().isEmpty())在您的条件中添加此项您真正想要做的事情??说清楚,我只想在用户输入为“空”时退出while循环,或者在一个简单的“输入按钮”上按“添加中断”;在其他部分中,没有sir.hasNext()检测到空/空用户输入。我尝试了null“,empty…不幸的是这些都不起作用:(@Akhil:实际上,next well会等待下一个令牌,所以well总是返回非空字符串。您可能需要切换到hasNextLine()和nextLine()。扫描仪已更新。当我使用hasNextLine()时,控件正在同一行中搜索输入(也就是说,前一行接受用户输入的键值对)…因此,当我在那之后按enter键时,它将控制从循环中中断。我已经更新了查询中的代码。请查看它,看看为什么nextLine()不起作用否,先生。hasNext()没有检测到空/空用户输入。我尝试了空,“”,empty…不幸的是这些都不起作用:(@Akhil:实际上,next well会等待下一个令牌,所以well总是返回非空字符串。您可能需要切换到hasNextLine()和nextLine()。扫描仪已更新。当我使用hasNextLine()时,控件正在同一行中搜索输入(也就是说,前一行接受用户输入的键值对)…因此,当我在那之后按enter键时,它将控制从循环中中断。我已经更新了查询中的代码。请查看它,看看为什么nextLine()不起作用否,先生。hasNext()没有检测到空/空用户输入。我尝试了空,“”,empty…不幸的是这些都不起作用:(不,sir.hasNext()没有检测到空/null用户输入。我尝试了null,“,empty…不幸的是,这些都不起作用:(