gpt4 book ai didi

java - 如何在数组中找到最接近给定数字的值

转载 作者:行者123 更新时间:2023-11-30 03:33:27 25 4
gpt4 key购买 nike

我正在努力理解这个概念(数组),但我遇到了很多麻烦(这是我的第一门计算机科学类(class)。)这是我的代码,问题在顶部注释了。我试图解决这个问题,但我认为我的逻辑不正确,因为我没有得到想要的答案。

// Generate an array of 50 random numbers between 1 to 100. Now, find the number in the array closest to 75 and output it using println(). 

int[] numbers = new int[50];
int targetNumber = 75;

for (int i = 0; i < numbers.length; i++){
numbers[i] = (int) random(1,100);

int closestSoFar = abs(numbers[i]-targetNumber);

if(closestSoFar > targetNumber){
closestSoFar = abs(numbers[i]-targetNumber);

println(closestSoFar);
}
}

虽然我非常感谢正确的答案,但我很想听听为什么这是正确的答案,以及如何改进我的逻辑,以便我可以自己做这件事 future 。

最佳答案

根据要求,我将解释我认为的答案是什么,然后提供一些关于如何找到它的提示。

你的逻辑是:

int closestSoFar = abs(numbers[i] - targetNumber);
if (closestSoFar > targetNumber) {

现在想象数字是“76”。 closestSoFar 将变为 abs(76 - 75),即 1。这显然不大于 75

所以逻辑错误很简单:您正在将差异与绝对数字进行比较。

解决方案是您确实需要检查当前数字 numbers[i] 是否比 closestSoFar 更接近。这可以通过以下方式完成:

if (abs(numbers[i] - targetNumber) < abs(closestSoFar - targetNumber)) {

现在,关于您如何自己找到它,这里有一些提示:

  1. 第一个也是最简单的方法是查看代码并在脑海中运行一个场景(在本例中为数字 76)。边做边检查结果是否符合您的预期。在这种情况下,它会为您找到它。
  2. 如果这不起作用(例如,逻辑太复杂,无法在您的头脑中完成),则使用交互式调试器。单步执行检查变量的逻辑,并再次检查它是否返回您期望的结果。
  3. 如果这仍然没有帮助,那么您将不得不重构您的代码,将其分解为您可以独立验证的更小的部分。这就是单元测试是你的 friend 的地方。在这种情况下,您可以创建一个方法,例如 isClosestToTarget 并进行一些单元测试,以确保它在继续使用已测试方法的方法之前执行您期望的操作。

关于java - 如何在数组中找到最接近给定数字的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28512493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com