2015-11-18 3 views
0

то, что я пытаюсь сделать, это использовать цикл while, чтобы проверять userNum% 2> 1, когда он попадает на один. Я хочу, чтобы он остановился и распечатал все значения деления, например,Разделить на два цикла while в java

если 20 пользовательский номер, он будет генерировать. 20/2 и 10/2 и 5/2, а затем 2/2 в результате 1, а затем остановки (целочисленное деление)

import java.util.Scanner; 

public class DivideByTwoLoop { 
    public static void main (String [] args) { 
     int userNum = 0; 

     userNum = 20; 

     while ((userNum % 2) > 1){ 
     userNum = userNum/2; 
     System.out.println(userNum); 
     } 

     System.out.println(""); 

     return; 
    } 
} 

вот что я до сих пор. всякая помощь с благодарностью.

+0

И ваша проблема в том, что именно? – redFIVE

+0

'%' является modolu и не является делением, которое является '/' – bish

ответ

6

userNum % 2 является всегда либо 1 или 0, так что условие while -loop никогда не верно. Условие должно быть userNum > 1 вместо (userNum % 2) > 1.

+0

Спасибо за ответ, теперь моя проблема в том, что пока мой ожидаемый результат 20 10 5 2 1. im get 20 10 4 2. по какой-то причине. Я изменил цикл, чтобы выглядеть как Пока (userNum> 1) { userNum = userNum/2 System.out.print (userNum); – Ibrahim

+0

@ Ibrahim Я проверил код. отлично работает для меня (за исключением недостающих 20 на выходе). Является ли код в вопросе полным примером? – Paul

+0

это было, но спасибо, что я на самом деле закончил заниматься этим позже, после того как я ответил и получил его на работу, спасибо за вашу помощь! – Ibrahim