gpt4 book ai didi

java - 无法使用 Sentinel 值退出循环

转载 作者:行者123 更新时间:2023-11-30 08:32:36 27 4
gpt4 key购买 nike

我一直在尝试使用各种方法退出循环,这是我得到的最接近的方法,但它仍然存在扫描仪不匹配错误。

有人能指出我遗漏了什么吗?

代码:

import java.util.*;

public class LeapYear
{

public static void main(String[] args) {
Scanner input=new Scanner(System.in);
boolean four ;
boolean hundred;
boolean four_hundred;
boolean quit=true;
int check= 2000;
int min=1582;
String test;

//System.out.println("Enter a year to check if it is a leap year");
do {
do {
System.out.println("Enter a year to check if it is a leap year");
if(check <min ) {
System.out.println("That year is too old, choose a year in more recent history");
}
check =input.nextInt();
} while( check < min);

// check =input.nextInt();

if(check % 4==0) {
four=true;
} else {
four=false;
}

if(check%100==0) {
hundred=true;
} else {
hundred=false;
}

if(check %400==0) {
four_hundred=true;
} else {
four_hundred=false;
}

if(four==true) {

if(four==true&&hundred==false&&four_hundred==false) {
System.out.println("The year is a leap year");
}


if(four==true&&hundred==true&&four_hundred==false) {
System.out.println("The year is not a leap year");
}

if(four==true&&hundred==true&&four_hundred==true) {
System.out.println("The year is a leap year");
}
} else {
System.out.println("The year is not a leap year");
}

System.out.println("DO YOU WANT TO QUIT: Y/N ?");
while(!input.hasNext("true|false")) {
System.out.println("That is neither a true or false.");
input.nextBoolean();

if(input.hasNextBoolean()) {
quit=true;
}

if(input.hasNextBoolean()) {
quit=false;
}
}
} while(!quit==false);
}
}

最佳答案

您可以将外循环设为 while true 循环。然后,当你想退出时,你只需从方法中返回,从而停止方法和循环。不需要退出哨兵值

您还提示输入是/否,因此您应该检查它,而不是真或假。

String q = "n";
do {
System.out.println("Do you want to quit: Y/N ?");
String q = input.next();
if (q.equalsIgnoreCase("y")) return; // quit right here
else if (!q.equalsIgnoreCase("n"))
{
System.out.println("That is neither a y or n.");
continue; // repeat
} else { } // entered y, so continue on with the outer loop
} while (!q.equalsIgnoreCase("y") || !q.equalsIgnoreCase("n"));

和一般小费。编写此模式是一件非常初学者的事情,它看起来不错且易于理解

if(check %400==0) {
four_hundred=true;
} else {
four_hundred=false;
}

但是,你真的应该这样写

four_hundred = check % 400; 

在这里,为什么在保证其值的情况下得到 4 为真?

if(four==true) {
if(four==true&&hundred==false&&four_hundred==false) {
System.out.println("The year is a leap year");
}
if(four==true&&...

关于java - 无法使用 Sentinel 值退出循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40074267/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com