gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 13:33:13 29 4
gpt4 key购买 nike

所以我正在做一个 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/

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