Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将多个数字与用户输入进行比较,以找到最接近的答案。_Java_Comparison - Fatal编程技术网

Java 将多个数字与用户输入进行比较,以找到最接近的答案。

Java 将多个数字与用户输入进行比较,以找到最接近的答案。,java,comparison,Java,Comparison,基本上,我是java新手,并创建了一个小程序。我做了大部分。基本上,我现在有四个int,由文件阅读器完成,还有一个通过scanner.in生成的数字。我现在要做的就是将四个int与scanner.in数字进行比较,并显示与scanner.in输入最接近的数字 我不确定从哪里开始,因为这是关于比较结果的,我以前从未遇到过 感谢任何帮助,我只需要知道从哪里开始,真的 干杯,伙计们 创建另一个名为closestAnswer的int或类似的东西。这将是最后返回的结果。默认情况下,closestAnswe

基本上,我是java新手,并创建了一个小程序。我做了大部分。基本上,我现在有四个int,由文件阅读器完成,还有一个通过scanner.in生成的数字。我现在要做的就是将四个int与scanner.in数字进行比较,并显示与scanner.in输入最接近的数字

我不确定从哪里开始,因为这是关于比较结果的,我以前从未遇到过

感谢任何帮助,我只需要知道从哪里开始,真的


干杯,伙计们

创建另一个名为
closestAnswer
int
或类似的东西。这将是最后返回的结果。默认情况下,
closestAnswer
将被初始化为第一个
int
guess1
)。如果
guess2
actualswer
之间的差异小于
closestAnswer
actualswer
之间的差异,则
guess2
将成为新的
closestAnswer
。然后对
guess3
guess4
重复上述步骤。最后,
closestAnswer
将表示哪个猜测最接近
actualAnswer

这与在数组中查找最小的数字非常相似,只是在一组数字中查找最小的差异

如果您的4个数字位于某种列表/数组/可编辑集合中,则可以使用for循环快速遍历该数字

它可能看起来像这样

int currentClosest = numbers[0];
int smallestDifference = Math.Abs(scannedNum - number[0]); //or other infinity-value
for(int i = 1; i < number.length; i++) //iterate through array
{
    int currentDifference = Math.Abs(scannedNum - number[i]);
    if (  currentDifference < smallestDifference) //If this element is closer do stuff
    {
        currentClosest = number[i];
        smallestDifference = currentDifference;
    }
}

//print currentClosest
int currentClosest=数字[0];
int smallestDifference=Math.Abs(scannedNum-number[0])//或其他无穷大值
for(int i=1;i

如果您的数字不在一个数组或类似的数组中,您可以将它们放入一个数组中,或者只是手动使用类似的逻辑编写4个比较代码。希望这能有所帮助。

有几种方法可以做到这一点,但我会选择稍长一点的循环

int lowerBound = input, upperBound = input;
现在ArrayOfNumber应该是一个ArrayList,因此它可以使用contains方法。你也可以使用数组,但是你必须自己迭代,这只会增加不必要的麻烦

while (!arrayOfNumbers.contains(lowerBound) && !arrayOfNumbers.contains(upperBound) {
    lowerBound--;
    upperBound++;
}

// I'm using two 'if's, because there can be two closest
// numbers, if the input is directly between two values.

if (arrayOfNumbers.contains(lowerBound)) {
    System.out.println(lowerBound);
}
if (arrayOfNumbers.contains(upperBound)) {
    System.out.println(upperBound);
}

所以本质上,它向上和向下搜索以找到最接近的数字。如果你不用底片,那就更容易了,但我想我会更安全。如果你使用的是小数,那么情况也就不同了。

是数组中的输入,如果是,它会被排序吗?不,它不在数组中。我没有使用数组,不过在试图弄清楚如何使用数组时,数组似乎是最简单的方法。还要对guess[1..4]值进行排序,以便也可以使用二进制搜索。