Math.max和Math.min输出允许的最高和最低值 - java

所以我正在尝试制作一个程序,该程序将输出总和,平均值以及最小和最大值。除了最小和最大值输出2147483647和-2147483647,我基本上已经弄清楚了所有东西,我相信这是Java将计算的绝对最小和最大值。无论如何,我想计算用户输入的数字,因此这显然是不正确的。

这是我的课。我认为addValue方法出了问题。

public class DataSet
{
private int sum;
private int count;
private int largest;
private int smallest;
private double average;

public DataSet()
{
    sum = 0;
    count = 0;
    largest = Integer.MAX_VALUE;
    smallest = Integer.MIN_VALUE;
    average = 0;
}

public void addValue(int x)
{
    count++;
    sum = sum + x;
    largest = Math.max(x, largest);
    smallest = Math.min(x, smallest);
}

public int getSum()
{
    return sum;
}

public double getAverage()
{
    average = sum / count;
    return average;
}

public int getCount()
{
    return count;
}

public int getLargest()
{
    return largest;
}

public int getSmallest()
{
    return smallest;
}

 }

这是该项目的测试人员课程:

 public class DataSetTester {
 public static void main(String[] arg) {
     DataSet ds = new DataSet();
     ds.addValue(13);
     ds.addValue(-2);
     ds.addValue(3);
     ds.addValue(0);
       System.out.println("Count: " + ds.getCount());
       System.out.println("Sum: " + ds.getSum());
       System.out.println("Average: " + ds.getAverage());
     System.out.println("Smallest: " + ds.getSmallest());
       System.out.println("Largest: " + ds.getLargest());
 }
 }

除最小和最大数字外,所有内容均正确输出(计数,总和,平均值)。如果有人能指出我做错事情的正确方向,那将是很好的。谢谢。

参考方案

反转largestsmallest初始值,并且Math.maxMath.min将相应选择正确的值:

largest = Integer.MIN_VALUE;
smallest = Integer.MAX_VALUE;

由于Integer.MIN_VALUE是整数的最小可能值,因此该语句:

largest = Math.max(x, largest);

将在第一次调用时产生值x

Math.log无法正常工作-为什么? - java

//以下方法无法正常工作,我不确定为什么。日志结果不正确。 0.5返回日志值-0.6931471805599453,但是我的计算器显示它应该返回-3.3。public static void printCommonLogTable() { double x = 0; while (x <= 10) { System.out.println (x+ &#…

Java Bitshift取代Math.pow - java

我需要将Java中的Math.pow替换为bitshift。for (int i = n - 1; i >= 0; i--) Math.pow(16, n - i - 1) 其中n是十六进制数字的长度。13304fb表示n = 7。基本上是将十六进制转换为十进制。现在,我需要用Bitshift替换该Math.pow。我无法弄清楚,因为n可以和想要的一样…

在Java中,如何找到将双n乘以n的幂。等效于Python中的Math.log - java

我想在Java中的Python中找到Math.log的等效项。基本上,double 'n'会提高多少幂才能达到完整的double 'n'。示例(100, 10)返回2。因为,将10提升到第二幂以达到100。27, 3返回:3。49, 7返回2。等等。有谁知道这在Java中是什么。 参考方案 在Python中,您可以使用…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…