java - Switch 语句在 for 循环中提前结束

标签 java for-loop switch-statement

所以我正在做一个 HackerRank 问题,但由于某种原因似乎无法通过所有测试。我的代码通过了第一次运行,但似乎未通过所有其他测试。通过调试来看,似乎一旦使用了所有 switch case,for 循环就会终止。

本练习是一个 Java 列表问题。给出一个输入,例如

5
12 0 1 78 12
2
Insert
5 23
Delete
0

第一行包含一个整数,N(列表中元素的初始数量,在本例中为 5)。 第二行包含组成列表的 N 个空格分隔的整数。 第三行包含一个整数q(查询数)。 随后的几行描述了查询,每个查询都用两行来描述:

如果查询的第一行包含字符串Insert,则第二行包含两个空格分隔的整数,并且该值必须插入到索引处。 如果查询的第一行包含字符串 Delete,则第二行包含 index ,其元素必须从 中删除。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class ListSolution {
public static void main(String[] args){
    List<Integer> list1 = new ArrayList<>();
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    sc.nextLine();
    for(int i =0;i<n;i++){
        list1.add(sc.nextInt());
    }

    sc.nextLine();
    int q = sc.nextInt();
    sc.nextLine();
    for(int i=0;i<q;i++){
        switch(sc.nextLine()){
        case "Insert" :
            int x = sc.nextInt();
            int y = sc.nextInt();
            sc.nextLine();
            list1.add(x,y);             
            continue;
        case "Delete" :
            int z = sc.nextInt();
            list1.remove(z);
            continue;
        default:
            continue;
        }
    }
    for(int i=0;i<list1.size(); i++){
        System.out.print(list1.get(i)+" ");;
    }
}
}

我能够解决问题并传递这个特定的输入。然而,它失败了所有其他查询,其中有 3 个查询,其中插入和删除是前两个。看起来,一旦 switch 完成了所有情况,它就会终止 for 循环,即使还有更多迭代要做。此类输入的示例如下:

10
100 50 20 10 70 80 200 259 1 900
3
Insert
2 80
Delete
6
Insert
5 89

最佳答案

在 switch 情况下,使用 sc.next() 而不是 sc.nextLine()。最后,从插入案例中删除 sc.nextLine()。

关于java - Switch 语句在 for 循环中提前结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43107870/

相关文章:

java - OpenGL 根据窗口大小转换对象

r - 在 R 中使用向量代替 for 循环

ruby - 如何在 Ruby 中编写 switch 语句

java - Java 中有面板监听器吗?

java - 将每第 N 个字符添加到字符串中

c++ -++i 或 i++ 在 for 循环中??

r - R 中 for 循环的语法

c++ - 我可以使用开关来保持功能吗?

c - 用字符串切换

java - 如何使用 MySql 处理日语搜索查询?