为了账号安全,请及时绑定邮箱和手机立即绑定

为什么当我在其中插入 2 个数字时,我的 java 代码会打印出 []

为什么当我在其中插入 2 个数字时,我的 java 代码会打印出 []

拉丁的传说 2021-06-14 12:35:06
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值)。


查看完整回答
反对 回复 2021-06-17
  • 2 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信