如何验证范围内的用户输入?和循环 issue/confusion
How to validate user input in a range? And For Loop issue/confusion
当您输入年份时,如何验证用户的输入,范围必须在 1900-2021 之间。我也对在我的情况下使用 for 循环感到困惑。我需要打印出摩托车加速四次,然后紧接着我需要代码打印出它 braking/deaccelerating 3 次。我有一个 java class 和一个 Java 主 class。我尝试实现一个单独的方法来验证年份,但最终导致程序崩溃。
public class Motorcycle {
private int year;
private String make;
private int speed;
/**
*
* @param year
* @param make
*/
public Motorcycle(int year, String make) {
this.year = year;
this.make = make;
this.speed = 0;
}
public Motorcycle(){
this.year = 0;
this.make = "";
this.speed = 0;
}
public void setYear(int year) {
this.year = year;
}
public void setMake(String make) {
this.make = make;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public int getYear() {
return year;
}
public String getMake() {
return make;
}
public int getSpeed() {
return speed;
}
public void accelerate() {
this.speed += 5;
}
public void brake() {
this.speed -= 5;
}
@Override
public String toString() {
return "A " + year +" " + make + " going "+ speed +" miles per hour";
import java.util.*;
public class 摩托车演示 {
public static void main(String[] args) {
int year;
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the year of your Motorcycle"); //validate year 1900 -2021
year = keyboard.nextInt();
System.out.println("Enter the make of your Motorcycle(such as, Harley, Kawasaki)");
String maker = keyboard.next();
Motorcycle motor1 = new Motorcycle(year, maker);
System.out.println(motor1); //account for 0 speed toString()
for (int i = 0; i <= 3; i++) { //use for loop //accelerate 4 times and brake 3 times
motor1.accelerate();
System.out.println(motor1);
//System.out.println("A " + year + " " + maker + " going " + motor1.getSpeed() + "miles per hour.");
//to String method
}
for (int i = 0; i <= 3; i++);
{
motor1.brake();
System.out.println(motor1);
}
}
}
如果摩托车加速4次,刹车3次,那么输出应该显示:"A year and make (motorcycle brand) 的速度为 speed mph。以 0 mph 的速度开始并达到 20 的最大速度,然后减速 4 次,最终 speed 为 5 mph。
感谢任何帮助,并提前致谢。 :)
然后尝试围绕您的输入处理设置一个 while/do-while 循环。通过设置一个与while条件相同的布尔值,如果输入不正确则保持循环运行,如果答案正确则跳出循环
public static void main(String[] args) {
int year;
int currentYear = Calendar.getInstance().get(Calendar.YEAR); //Creating current year
boolean looping = false;
do {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the year of your Motorcycle"); //validate year 1900 -2021
year = keyboard.nextInt();
if (year < 1900 || year > currentYear) {
looping = true;
System.out.println("Invalid year!\nPlease type in valid year!");
} else
System.out.println("Enter the make of your Motorcycle(such as, Harley, Kawasaki)");
String maker = keyboard.next();
//Put condition here too if necessary, and put looping true if input is bad
} while(looping); //As long as looping is set true it reruns form
Motorcycle motor1 = new Motorcycle(year, maker);
System.out.println(motor1); //account for 0 speed toString()
for (int i = 0; i <= 3; i++) { //use for loop //accelerate 4 times and brake 3 times
motor1.accelerate();
System.out.println(motor1);
//System.out.println("A " + year + " " + maker + " going " + motor1.getSpeed() + "miles per hour.");
//to String method
}
for (int i = 0; i <= 3; i++);
{
motor1.brake();
System.out.println(motor1);
}
}
当您输入年份时,如何验证用户的输入,范围必须在 1900-2021 之间。我也对在我的情况下使用 for 循环感到困惑。我需要打印出摩托车加速四次,然后紧接着我需要代码打印出它 braking/deaccelerating 3 次。我有一个 java class 和一个 Java 主 class。我尝试实现一个单独的方法来验证年份,但最终导致程序崩溃。
public class Motorcycle {
private int year;
private String make;
private int speed;
/**
*
* @param year
* @param make
*/
public Motorcycle(int year, String make) {
this.year = year;
this.make = make;
this.speed = 0;
}
public Motorcycle(){
this.year = 0;
this.make = "";
this.speed = 0;
}
public void setYear(int year) {
this.year = year;
}
public void setMake(String make) {
this.make = make;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public int getYear() {
return year;
}
public String getMake() {
return make;
}
public int getSpeed() {
return speed;
}
public void accelerate() {
this.speed += 5;
}
public void brake() {
this.speed -= 5;
}
@Override
public String toString() {
return "A " + year +" " + make + " going "+ speed +" miles per hour";
import java.util.*;
public class 摩托车演示 {
public static void main(String[] args) {
int year;
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the year of your Motorcycle"); //validate year 1900 -2021
year = keyboard.nextInt();
System.out.println("Enter the make of your Motorcycle(such as, Harley, Kawasaki)");
String maker = keyboard.next();
Motorcycle motor1 = new Motorcycle(year, maker);
System.out.println(motor1); //account for 0 speed toString()
for (int i = 0; i <= 3; i++) { //use for loop //accelerate 4 times and brake 3 times
motor1.accelerate();
System.out.println(motor1);
//System.out.println("A " + year + " " + maker + " going " + motor1.getSpeed() + "miles per hour.");
//to String method
}
for (int i = 0; i <= 3; i++);
{
motor1.brake();
System.out.println(motor1);
}
}
}
如果摩托车加速4次,刹车3次,那么输出应该显示:"A year and make (motorcycle brand) 的速度为 speed mph。以 0 mph 的速度开始并达到 20 的最大速度,然后减速 4 次,最终 speed 为 5 mph。
感谢任何帮助,并提前致谢。 :)
然后尝试围绕您的输入处理设置一个 while/do-while 循环。通过设置一个与while条件相同的布尔值,如果输入不正确则保持循环运行,如果答案正确则跳出循环
public static void main(String[] args) {
int year;
int currentYear = Calendar.getInstance().get(Calendar.YEAR); //Creating current year
boolean looping = false;
do {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the year of your Motorcycle"); //validate year 1900 -2021
year = keyboard.nextInt();
if (year < 1900 || year > currentYear) {
looping = true;
System.out.println("Invalid year!\nPlease type in valid year!");
} else
System.out.println("Enter the make of your Motorcycle(such as, Harley, Kawasaki)");
String maker = keyboard.next();
//Put condition here too if necessary, and put looping true if input is bad
} while(looping); //As long as looping is set true it reruns form
Motorcycle motor1 = new Motorcycle(year, maker);
System.out.println(motor1); //account for 0 speed toString()
for (int i = 0; i <= 3; i++) { //use for loop //accelerate 4 times and brake 3 times
motor1.accelerate();
System.out.println(motor1);
//System.out.println("A " + year + " " + maker + " going " + motor1.getSpeed() + "miles per hour.");
//to String method
}
for (int i = 0; i <= 3; i++);
{
motor1.brake();
System.out.println(motor1);
}
}