您好我是Java语言的新手,我的教授给了我们一份并不太复杂的任务。我已经完成了大部分工作。这就是我们应该做的事情。如果输入两个整数,则总和应为int。如果输入两个双打,则总和应为双倍。如果两者中的任何一个是双,那么总和也应该是一个双。如果两者中的任何一个可以作为二进制数进行解释,则应将其视为二进制数。最后,如果两个数字都是二进制,那么总和应该以二进制显示。我到目前为止的代码,做了所有的事情,除非我输入两个整数,它给了我一个双倍的总和,有人可以建议我应该在哪里修改它吗?
到目前为止,这是我的代码:
import java.util.Scanner;
public class ProjectZero
{
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
cin.useRadix(2);
System.out.print("Enter two numbers separated by a space: ");
if (cin.hasNextInt())
{
int first = cin.nextInt();
if (cin.hasNextInt())
{
int second = cin.nextInt();
bigFunction(first, second);
}
else if (cin.hasNextDouble())
{
double second = cin.nextDouble();
bigFunction(first,second);
}
else
System.out.println("Please try again and enter numbers.");
}
else if (cin.hasNextDouble())
{
double first = cin.nextDouble();
if (cin.hasNextDouble())
{
double second = cin.nextDouble();
bigFunction(first,second);
}
else
System.out.println("Please try again and enter numbers.");
}
else
System.out.println("Please try again and enter numbers.");
cin.close();
}
public static void bigFunction(int a, int b)
{
int sum = a + b;
System.out.print("The sum of " + Integer.toBinaryString(a) + " (Decimal value: " + a + ")");
System.out.println(" and " + Integer.toBinaryString(b) + " (Decimal value: " + b + ")" + " is " + Integer.toBinaryString(sum));
}
public static void bigFunction(double a, double b)
{
double sum = a + b;
System.out.println("The sum of " + a + " and " + b + " is " + sum);
}
}
答案 0 :(得分:0)
更容易回答
而不是if .hasNextDouble
if (first % 1 ==0)
{
//you have an integer
}
else
{
//it is not an integer
}
%表示模数,它基本上除了某些东西并检查是否存在余数,如果在将数字除以1之后有余数则不是int
答案 1 :(得分:0)
最简单的方法是将两个输入读作字符串。然后检查字符串以查看它们是否仅包含数字0和1(如果是,则为二进制数)。如果不是二进制,请检查它是否可以解释为double。如果是这样,转换为int并查看它是否是相同的值(然后它是一个int)。如果它不能被读作双精度格式,则格式错误。请注意,您可能必须考虑数字是否太大而不适合int或long等等。
答案 2 :(得分:0)
当输入的两个都是int时,你得到和的原因是因为你正在改变扫描器的默认基数,因此它无法将输入识别为int而是将其读作double。
如果你不改变扫描仪的基数,它将使用默认基数(10)和基数10处的扫描输入。现在这将适用于输入:int&双;但不适用于二进制输入。所有这些归结为您对实施的选择,我认为您不能用当前的方法来满足所有必需的输入。我建议遵循@FredK方法并将输入作为字符串(即使这种方法有它自己的缺陷)。
答案 3 :(得分:-1)
您无法检查输入的两个数字是否实际上是两个单独的整数。而且,你要求两个双参数,你的总和也是一个双倍,所以当你把它们放入bigFunction
时,你总是把它们加到双打中,总和是双倍的,所以你总是得到一个双
您需要检查bigFunction
函数内部以检查它们是否实际上是两个双打或两个整数等。
或者实际上是制作单独的功能,但总是争取懒惰!
希望能让齿轮搅拌!
答案 4 :(得分:-2)
在java中,如果运行代码
,则整数是double的形式int a =4
int b =5
double b = a +c
System.out.print(b);
这可以用作整数是double的形式。
最简单的方法是将双重方法重命名为其他方法
最佳解决方案
userinput(double)= variable
if ((variable == Math.floor(variable))
这轮数字是这样的5.9将是5,如果它等于变量你有一个int。