Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我怎样才能退出这个循环?_Java_Loops_Collections_Hashmap_Iteration - Fatal编程技术网

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

Java 我怎样才能退出这个循环?,java,loops,collections,hashmap,iteration,Java,Loops,Collections,Hashmap,Iteration,此代码试图接受用户的密钥并将其存储到字符串数据数组中。在程序的后面,每个键的值都以某种特定的格式显示 首先,我希望在用户输入为空/nextline时结束/退出此循环。我不想使用任何EOF字符或字符串退出循环 我对以前的SO问题/解决方案进行了一些搜索,但在我的案例中不起作用。需要帮助解决这个问题或任何其他选择是最受欢迎的 提前谢谢 class DictionaryAndMap{ public static void main(String[] args){ Scanner sc =

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

首先,我希望在用户输入为空/nextline时结束/退出此循环。我不想使用任何EOF字符或字符串退出循环

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

提前谢谢

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…不幸的是,这些都不起作用:(