簡體   English   中英

在 java 中擺脫這個無限循環的方法是什么?

[英]what is the way to get out of this infinite loop in java?

public class checkdivi {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
        if(sc.hasNext()){
            int T=sc.nextInt();
            int i=1;
            while(i <= T){
                int temp=T;

                    while((i%2) ==0 && (temp%2) ==0){
                            temp=temp/2;
                            i=i/2;
                            System.out.println("ok"+i);
                            if(i%2 !=0 || temp%2 !=0)
                                System.out.println("oh"+i);
                                break;                            
                        }               
                  System.out.println(""+i);
                  i=i+1;
                  System.out.println("yeah"+i);
            }                   
    }

}}

//當輸入為12時,這段代碼無限打印下面的行。為什么i的值一次又一次變成1?

ok1
oh1
1
yeah2

您將i設置為i/2而不是在嵌套的 while 循環中使用臨時變量,因此每次(i%2)==0 && (temp%2)==0時它最終都會返回; 因為您最初將i設置為 1,所以只要i為 2,這總是會發生,盡管只有當輸入是偶數時才會發生。 要解決此問題,請使用第二個臨時變量來存儲i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM