检查是否除以零,然后打印两行?
Check if dividing by zero, then printing two lines?
我正在尝试编写一个程序,它将接受两个用户输入的数字,然后根据它们执行计算,但我想使用 if 语句来检查它是否试图除以零或输出将是无穷大。
import java.util.Scanner;
public class work {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double a, b, c, d;
System.out.printf("Enter the first number:");
a = scan.nextDouble();
System.out.printf("Enter the second number:");
b = scan.nextDouble();
/* various calculations */
c = a / b;
d = b / a;
if (a > 0)
{
System.out.printf("a/b = %.2f\n", c);
}
if (b > 0)
{ System.out.printf("b/a = %.2f\n", d);
}
else if (a <= 0)
{ System.out.printf("a/b = %.1f\n", d);
if (b > 0)
System.out.printf("a/b = INF\n");
}
}
}
例如,如果我输入 4 和 5,它会像这样结束:
Enter the first number: 4
Enter the second number: 5
a/b = 0.80
b/a = 1.25
但是我无法让它检查零,并最终得到很多奇怪的输出。我怎样才能得到这样的输出?
------ Sample run 2:
Enter the first number: 0
Enter the second number: 4
a/b = 0.0
b/a = INF
------ Sample run 3:
Enter the first number: 4
Enter the second number: 0
a/b = INF
b/a = 0.0
------ Sample run 4:
Enter the first number: 0
Enter the second number: 0
a/b = INF
b/a = INF
正如我注意到的那样,您正在尝试从控制台获取一个整数作为双精度数。这可能会导致各种奇怪的输出。
所以将您的代码更改为
a = scan.nextInt();
b = scan.nextInt();
这应该可以正常工作。谢谢
看来你这里有多个问题。这里的第一个问题是您在决定解决方案是否为 INF 时要检查分子。例如,如果您输入 1 和 0,您的代码将检查 a > 0(它是)并输出 c,即 1/0。你真正想要做的是检查方程的支配符(在本例中为 b)是否等于零。
您似乎还忘记了第一个 if 语句的 else 语句,我不确定您在第二个 if 语句的 else 中试图完成什么。
你的第三个问题是你的代码正在检查变量是否小于 0,而不是不等于 0,这将在任何负输入时产生意想不到的结果。请记住,只有零会导致答案未定义,或如您所说的 INF。在任何情况下,下面的代码都应该按预期运行。请注意,我稍微修改了 class 名称以符合 Java naming conventions.
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double a, b, c, d;
System.out.print("Enter the first number: ");
a = scan.nextDouble();
System.out.print("Enter the second number: ");
b = scan.nextDouble();
/* various calculations */
c = a / b;
d = b / a;
if (b != 0)
{
System.out.printf("a/b = %.2f\n", c); /* the dominator (b) is not
zero, so the solution is a/b
(stored in the variable c) */
}
else
{
System.out.print("a/b = INF\n"); /* the dominator (b) is zero,
so the solution is INF */
}
if (a != 0)
{
System.out.print("b/a = %.2f\n", d); /* the dominator (a) is not
zero, so the solution is a/b
(stored in the variable d) */
}
else
{
System.out.printf("b/a = INF\n"); /* the dominator (a) is zero,
so the solution is INF */
}
}
}
我正在尝试编写一个程序,它将接受两个用户输入的数字,然后根据它们执行计算,但我想使用 if 语句来检查它是否试图除以零或输出将是无穷大。
import java.util.Scanner;
public class work {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double a, b, c, d;
System.out.printf("Enter the first number:");
a = scan.nextDouble();
System.out.printf("Enter the second number:");
b = scan.nextDouble();
/* various calculations */
c = a / b;
d = b / a;
if (a > 0)
{
System.out.printf("a/b = %.2f\n", c);
}
if (b > 0)
{ System.out.printf("b/a = %.2f\n", d);
}
else if (a <= 0)
{ System.out.printf("a/b = %.1f\n", d);
if (b > 0)
System.out.printf("a/b = INF\n");
}
}
}
例如,如果我输入 4 和 5,它会像这样结束:
Enter the first number: 4
Enter the second number: 5
a/b = 0.80
b/a = 1.25
但是我无法让它检查零,并最终得到很多奇怪的输出。我怎样才能得到这样的输出?
------ Sample run 2:
Enter the first number: 0
Enter the second number: 4
a/b = 0.0
b/a = INF
------ Sample run 3:
Enter the first number: 4
Enter the second number: 0
a/b = INF
b/a = 0.0
------ Sample run 4:
Enter the first number: 0
Enter the second number: 0
a/b = INF
b/a = INF
正如我注意到的那样,您正在尝试从控制台获取一个整数作为双精度数。这可能会导致各种奇怪的输出。 所以将您的代码更改为
a = scan.nextInt();
b = scan.nextInt();
这应该可以正常工作。谢谢
看来你这里有多个问题。这里的第一个问题是您在决定解决方案是否为 INF 时要检查分子。例如,如果您输入 1 和 0,您的代码将检查 a > 0(它是)并输出 c,即 1/0。你真正想要做的是检查方程的支配符(在本例中为 b)是否等于零。
您似乎还忘记了第一个 if 语句的 else 语句,我不确定您在第二个 if 语句的 else 中试图完成什么。
你的第三个问题是你的代码正在检查变量是否小于 0,而不是不等于 0,这将在任何负输入时产生意想不到的结果。请记住,只有零会导致答案未定义,或如您所说的 INF。在任何情况下,下面的代码都应该按预期运行。请注意,我稍微修改了 class 名称以符合 Java naming conventions.
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double a, b, c, d;
System.out.print("Enter the first number: ");
a = scan.nextDouble();
System.out.print("Enter the second number: ");
b = scan.nextDouble();
/* various calculations */
c = a / b;
d = b / a;
if (b != 0)
{
System.out.printf("a/b = %.2f\n", c); /* the dominator (b) is not
zero, so the solution is a/b
(stored in the variable c) */
}
else
{
System.out.print("a/b = INF\n"); /* the dominator (b) is zero,
so the solution is INF */
}
if (a != 0)
{
System.out.print("b/a = %.2f\n", d); /* the dominator (a) is not
zero, so the solution is a/b
(stored in the variable d) */
}
else
{
System.out.printf("b/a = INF\n"); /* the dominator (a) is zero,
so the solution is INF */
}
}
}