测试循环中的数据类型错误 java
test for data type errors in loops java
是的,这是一道作业题。我是编程的初学者。我擅长将 if/else 与 for 循环一起使用,因为我的教授要求我们使用 while 循环。我是confused.This问题...
Q1) 假设您正在编写一个涉及 2 位数字的游戏程序,每个数字由 2 个不同的数字组成。测试在这个游戏中是否接受输入序列中的数字。测试输入错误(包括类型)。
我用于检查数据类型的 while 循环一开始工作正常,但在输入 int 后我无法检查数据类型。任何人都可以向我解释这个问题吗?谢谢...
public static void main(String[] args){
int num = 0;
Scanner input = new Scanner(System.in);
System.out.println("Enter a 2-digit number. The digits should be different. zero to stop");
while(!input.hasNextInt()){
System.out.println("Not an integer,try again " + num);
input.next();
}
num = input.nextInt();
while(num != 0){
while(num < 10 || num >= 99){
System.out.println("NOT good for your game! " + num );
System.out.println("Enter a 2-digit number. The digits should be different. Zero to stop");
num = input.nextInt();
}
System.out.println("Good for your game! Play! " + num);
num = input.nextInt();
}
}
}
while 循环首先检查 System.in 是否正在输入数字 (int):while(!input.hasNextInt())
,但是当您第一次输入数字时,循环退出并进入接下来的 2 个循环:
while(num != 0){
while(num < 10 || num >= 99){
然后在内部循环的末尾你有:
num = input.nextInt();
这意味着您已经假设下一个输入将是一个整数。所以如果你输入一个非数字输入,程序会抛出异常。
我建议您将整个循环更改为:
public static void main(String[] args) {
int num = 1;
Scanner input = new Scanner(System.in);
do {
System.out.println("Enter a 2-digit number. The digits should be different. zero to stop");
if (!input.hasNextInt()) {
System.out.println("Not an integer,try again " + num);
} else {
num = input.nextInt();
if (num < 10 || num >= 99) {
System.out.println("NOT good for your game! " + num);
} else {
System.out.println("Good for your game! Play! " + num);
}
}
} while(num != 0);
input.close();
System.out.println("game stop");
}
import java.util.Scanner;
public class Number1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String prompt = "Enter a 2-digit number. The digits should be different. Zero to stop:";
getInt(sc,prompt);
}
public static void getInt(Scanner sc,String prompt) {
System.out.println(prompt);
int num;
while (!sc.hasNextInt())
{
System.out.println("Not an integer, Try again");
sc.next();
}
num = sc.nextInt();
while(num != 0) {
if (num < 10 || num >= 99 || num == 0)
{
System.out.println("Not good for your game!");
}
else
{
System.out.println("Good for your game! Play!");
}
System.out.println(prompt);
num = sc.nextInt();
}
}
}
是的,这是一道作业题。我是编程的初学者。我擅长将 if/else 与 for 循环一起使用,因为我的教授要求我们使用 while 循环。我是confused.This问题...
Q1) 假设您正在编写一个涉及 2 位数字的游戏程序,每个数字由 2 个不同的数字组成。测试在这个游戏中是否接受输入序列中的数字。测试输入错误(包括类型)。
我用于检查数据类型的 while 循环一开始工作正常,但在输入 int 后我无法检查数据类型。任何人都可以向我解释这个问题吗?谢谢...
public static void main(String[] args){
int num = 0;
Scanner input = new Scanner(System.in);
System.out.println("Enter a 2-digit number. The digits should be different. zero to stop");
while(!input.hasNextInt()){
System.out.println("Not an integer,try again " + num);
input.next();
}
num = input.nextInt();
while(num != 0){
while(num < 10 || num >= 99){
System.out.println("NOT good for your game! " + num );
System.out.println("Enter a 2-digit number. The digits should be different. Zero to stop");
num = input.nextInt();
}
System.out.println("Good for your game! Play! " + num);
num = input.nextInt();
}
}
}
while 循环首先检查 System.in 是否正在输入数字 (int):while(!input.hasNextInt())
,但是当您第一次输入数字时,循环退出并进入接下来的 2 个循环:
while(num != 0){
while(num < 10 || num >= 99){
然后在内部循环的末尾你有:
num = input.nextInt();
这意味着您已经假设下一个输入将是一个整数。所以如果你输入一个非数字输入,程序会抛出异常。
我建议您将整个循环更改为:
public static void main(String[] args) {
int num = 1;
Scanner input = new Scanner(System.in);
do {
System.out.println("Enter a 2-digit number. The digits should be different. zero to stop");
if (!input.hasNextInt()) {
System.out.println("Not an integer,try again " + num);
} else {
num = input.nextInt();
if (num < 10 || num >= 99) {
System.out.println("NOT good for your game! " + num);
} else {
System.out.println("Good for your game! Play! " + num);
}
}
} while(num != 0);
input.close();
System.out.println("game stop");
}
import java.util.Scanner;
public class Number1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String prompt = "Enter a 2-digit number. The digits should be different. Zero to stop:";
getInt(sc,prompt);
}
public static void getInt(Scanner sc,String prompt) {
System.out.println(prompt);
int num;
while (!sc.hasNextInt())
{
System.out.println("Not an integer, Try again");
sc.next();
}
num = sc.nextInt();
while(num != 0) {
if (num < 10 || num >= 99 || num == 0)
{
System.out.println("Not good for your game!");
}
else
{
System.out.println("Good for your game! Play!");
}
System.out.println(prompt);
num = sc.nextInt();
}
}
}