Java 重复循环,直到输入对分数类有效
我正在上一堂简单的分数测试课。我希望我的程序能做到这一点 如果用户输入0>循环将重复,直到用户输入一个不是0的数字 在我的课堂上,我不这么做。我尝试将它与Java 重复循环,直到输入对分数类有效,java,Java,我正在上一堂简单的分数测试课。我希望我的程序能做到这一点 如果用户输入0>循环将重复,直到用户输入一个不是0的数字 在我的课堂上,我不这么做。我尝试将它与do混用,而条件与if语句混用,加上初始化if语句true或false。我卡住了,所以我需要帮助 这是我的分数课: import java.util.*; public class FractionTest { public static void main(String args[]) { Scanner inpu
do混用,而条件与if
语句混用,加上初始化if语句true
或false
。我卡住了,所以我需要帮助
这是我的分数课:
import java.util.*;
public class FractionTest {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
boolean valid = true;
int num, den;
den = 0;
do {
System.out.println("Please enter the numerator: ");
num = input.nextInt();
System.out.println("Please enter the denominator: ");
den = input.nextInt();
if (den == 0 && valid) {
System.out.println("denominator cannot be zero");
System.out.println("Please enter the numerator: ");
num = input.nextInt();
System.out.println("Please enter the denominator: ");
den = input.nextInt();
}
} while (den != 0 && !valid);
System.out.println("Decimal is " + result(num, den));
}
public static double result(int x, int y) {
return (x / y);
}
}
这个问题并不完全清楚,但我想你们是在问,当分母变为零时,继续循环,否则计算答案并返回值。我根据这个对你的代码做了一些修改
public class FractionTest {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
boolean valid = true;
int num, den;
den = 0;
while(den == 0) {
System.out.println("Please enter the numerator: ");
num = input.nextInt();
System.out.println("Please enter the denominator: ");
den = input.nextInt();
if (den == 0 && valid) {
System.out.println("denominator cannot be zero");
System.out.println("Please enter the numerator: ");
num = input.nextInt();
System.out.println("Please enter the denominator: ");
den = input.nextInt();
}
}
System.out.println("Decimal is " + result(num, den));
return;
}
public static double result(int x, int y) {
return ((1.0)*x / y);
}
}将主方法中的代码更改为:
Scanner input = new Scanner(System.in);
int num, den;
do {
System.out.println("Please enter the numerator: ");
num = input.nextInt();
System.out.println("Please enter the denominator: ");
den = input.nextInt();
if (den!=0)
System.out.println("Decimal is " + result(num, den));
else
System.out.println("Denominator shouldnt be 0");
} while (den == 0);
input.close();
无需初始化“den”,因为该值已被替换
不需要“布尔变量”,因为它的值永远不会改变
如果den==0,则无需像循环应该的那样在循环内重新请求输入
无论如何,重新运行
我只想分离您的输入验证:
System.out.println("Please enter the numerator: ");
num = input.nextInt();
do{
System.out.println("Please enter the denominator: ");
System.out.println("denominator cannot be zero");
den = input.nextInt();
} while (den == 0);
System.out.println("Decimal is " + result(num, den));
如果你需要为你的分子做一个输入验证,那就做一段时间。此外,valid的布尔值始终为true。从不修改为错误。如果x为真,逻辑(x^True)将始终为真。请详细说明“它没有这样做”:它在做什么?指定输入和预期的行为/输出。是否确定result
返回您认为的结果?看起来您不会更改循环中任意位置的valid值。此外,如果希望在用户输入0时重复循环,则看起来您应该使用den==0而不是den!=0在while条件中,因为它是int/int
,我们必须乘以1.0
才能键入int
。不错的一点@bradimusIt奏效了,我看到的所有其他邮件都建议执行布尔真语句,如果我希望循环不断重复,直到分母不是0。我只是好奇我的程序出了什么问题?