import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class forA1 { public static void main(String[] args) throws Exception{ Scanner sc = new Scanner(System.in); String []num = sc.nextLine().split(" "); int n = Integer.parseInt(num[0]); int m = Integer.parseInt(num[1]); while(n != 0){ // initialize the queue Queue<Integer> queue = new LinkedList<Integer>(); queue.clear(); for (int i = 1; i <= n; i++) queue.add(i); //int res = 0; while (!queue.isEmpty()) { for (int i = 0; i < m-1; i++) queue.add(queue.remove()); queue.remove(); } //System.out.println(res); //System.out.println(res); System.out.print(queue); String []num2 = sc.nextLine().split(" "); n = Integer.parseInt(num2[0]); m = Integer.parseInt(num2[1]); } }}当我插入 2 个数字时,它会打印出 []。请一些人向我解释为什么会发生这种情况,我是一名学生,所以如果我问的问题对其他人来说很容易,我深表歉意。
2 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
不确定你想用队列做什么,但因为你有条件while (!queue.isEmpty()),无论你在循环中做什么(除非你有某种 break 逻辑,感谢@Andy 的评论) 你要么永远不会离开它(即无限循环),或者在它之后获得一个空队列。
如果你从
while (!queue.isEmpty()) {
for (int i = 0; i < m-1; i++)
queue.add(queue.remove());
queue.remove();
}
至
for (int i = 0; i < m-1; i++)
queue.add(queue.remove());
queue.remove();
您将能够看到一些非空输出(给定适当的m和n值)。
添加回答
举报
0/150
提交
取消