Java,Double 数据类型有问题,一直返回 1.00 而不是 1.8
Java, something wrong with Double data type, keep returning 1.00 instead of 1.8
我正在为我的大学做一个项目,到目前为止代码运行良好,除了当一个程序试图计算所有输入的平均值时,它总是给出错误的答案。
前任:
测试输入:
3个
-4
5个
12
-7
0(退出循环)
结果 ->
总数:9
计数器:5
平均值 = 1.0 ?应该是 1.8
如果有人能帮到我,请给我一些建议。
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int counter = 0;
int intInput;
int intLargest;
int intSmallest;
int intEven = 0;
int intOdd = 0;
int intSum = 0;
String strMessage = "Enter a series of value (0 to quit)";
System.out.print(strMessage);
System.out.println();
System.out.print("Enter Integer value?" + "\n");
intInput = sc.nextInt();
intLargest = intInput;
if (intLargest == 0)
{
intLargest = 0;
}
else
{
intLargest = intInput;
}
/////////////////////////////////////////////////////////////
intSmallest = intInput;
if (intSmallest == 0)
{
intSmallest = 0;
}
else
{
intSmallest = intInput;
}
while(intInput != 0)
{
{
if (intInput > intLargest)
{
intLargest = intInput;
}//Get the largest value
else if (intInput < intSmallest)
{
intSmallest = intInput;
}//Get the smallest value
if ((intInput%2) == 0)
{
intEven++;
}//Get number of Even value
else if ((intInput%2) != 0)
{
intOdd++;
}//Get number of Odd value
}
intSum = intSum + intInput;
intInput = sc.nextInt();
counter++;
}
/******************************************** /
double doubleAvg = 0;
if (counter > 0)
{
doubleAvg = intSum / counter;
}
/******************************************** *******/
System.out.println();
System.out.print("Smallest = " + intSmallest +"\n");
System.out.print("Largest = " + intLargest + "\n");
System.out.print("Total Entered = " + counter + "\n");
System.out.print("Even Number = " + intEven + "\n");
System.out.print("Odd Number = " + intOdd + "\n");
System.out.print("Average = " + doubleAvg + "\n");
System.out.print("SUM: " + intSum + "\n");
}
}
intSum
和 counter
都声明为 int
。如果用 int 除以 int,结果也将是 int。所以除法的结果是 1,然后它被转换为双精度,你得到 1.0。要获得正确的结果,请将 intSum
声明为 double.
我正在为我的大学做一个项目,到目前为止代码运行良好,除了当一个程序试图计算所有输入的平均值时,它总是给出错误的答案。 前任: 测试输入: 3个 -4 5个 12 -7 0(退出循环)
结果 -> 总数:9 计数器:5 平均值 = 1.0 ?应该是 1.8
如果有人能帮到我,请给我一些建议。
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int counter = 0;
int intInput;
int intLargest;
int intSmallest;
int intEven = 0;
int intOdd = 0;
int intSum = 0;
String strMessage = "Enter a series of value (0 to quit)";
System.out.print(strMessage);
System.out.println();
System.out.print("Enter Integer value?" + "\n");
intInput = sc.nextInt();
intLargest = intInput;
if (intLargest == 0)
{
intLargest = 0;
}
else
{
intLargest = intInput;
}
/////////////////////////////////////////////////////////////
intSmallest = intInput;
if (intSmallest == 0)
{
intSmallest = 0;
}
else
{
intSmallest = intInput;
}
while(intInput != 0)
{
{
if (intInput > intLargest)
{
intLargest = intInput;
}//Get the largest value
else if (intInput < intSmallest)
{
intSmallest = intInput;
}//Get the smallest value
if ((intInput%2) == 0)
{
intEven++;
}//Get number of Even value
else if ((intInput%2) != 0)
{
intOdd++;
}//Get number of Odd value
}
intSum = intSum + intInput;
intInput = sc.nextInt();
counter++;
}
/******************************************** /
double doubleAvg = 0;
if (counter > 0)
{
doubleAvg = intSum / counter;
}
/******************************************** *******/
System.out.println();
System.out.print("Smallest = " + intSmallest +"\n");
System.out.print("Largest = " + intLargest + "\n");
System.out.print("Total Entered = " + counter + "\n");
System.out.print("Even Number = " + intEven + "\n");
System.out.print("Odd Number = " + intOdd + "\n");
System.out.print("Average = " + doubleAvg + "\n");
System.out.print("SUM: " + intSum + "\n");
}
}
intSum
和 counter
都声明为 int
。如果用 int 除以 int,结果也将是 int。所以除法的结果是 1,然后它被转换为双精度,你得到 1.0。要获得正确的结果,请将 intSum
声明为 double.