我正在努力理解这个概念(数组),但遇到了很多麻烦(这是我的第一门计算机科学课程。)这是我的代码,问题在顶部列出。我已尝试解决此问题,但我认为我的逻辑不正确,因为我没有得到想要的答案。
// 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);
}
}
尽管我将非常感谢正确的答案,但我很想听听为什么这是正确的答案,以及我将如何改进自己的逻辑,以便将来自己独立完成。
根据要求,我将解释我认为的答案,然后对如何找到答案提供一些提示。
您的逻辑是:
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)) {
现在,关于您自己如何找到它,这里有一些提示:
isClosestToTarget
并进行一些单元测试,以确保在继续使用已测试方法的方法之前,它可以达到预期的效果。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句