Multiple conditions in a while loop

僤鯓⒐⒋嵵緔 提交于 2019-12-02 13:28:29

问题


import java.util.Calendar;
import java.util.GregorianCalendar;

public class CountingSundays {

    public static void main(String args[]) {

        Calendar cal = new GregorianCalendar(1901, 00, 01); // month set to 0for jan , 1= feb etc

        while((cal.get(Calendar.YEAR) != 2001) && (cal.get(Calendar.MONTH) != 0) && cal.get(Calendar.DAY_OF_MONTH) != 1) { // while not 1/1/2001

                System.out.print(cal.get(Calendar.MONTH));
            // cal.add(Calendar.DAY_OF_MONTH, 1);
        }
    }
}

Im trying to iterate through the while loop by adding on a day at a time but it wont even access the while loop the first time. Are the conditions in the while loop right? When i tested it it worked with just one condition but stopped when i added the second condition.


回答1:


It should be

while( !(cal.get(Calendar.YEAR) == 2001 && cal.get(Calendar.MONTH) == 0 && cal.get(Calendar.DAY_OF_MONTH) == 1) ) { // while not 1/1/2001



回答2:


This is just a simple logic error. If even one of those is false (say, if the month IS 0), then you have true && false && true, which is false.

You need the "not" outside of the entire expression, or you need to use "||" to combine them:

while( !(year == 2001 && month == 0 && day == 1) )

or

while( (year != 2011) || (month != 0) || (day != 1) )


来源:https://stackoverflow.com/questions/17886077/multiple-conditions-in-a-while-loop

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!