gpt4 book ai didi

java - 使用循环添加两个数组元素

转载 作者:行者123 更新时间:2023-12-01 13:47:34 24 4
gpt4 key购买 nike

我正在尝试使用数组执行一个任务:添加两个元素并检查总和是否小于或等于 50。如果满足条件,则应该中断。

示例程序:

public class HelloWorld {

public static void main(String []args)
{
int[] nums = new int[2];

for (int i = 0; i < 100; i++)
{
nums[i] = i + 1;
System.out.println(i);
}
System.out.println(nums[1]);
System.out.println(nums[2]);

if (nums[0]+nums[1]<=50)
{
System.out.printf("Sucessfully finished");
}
}
}

当然,我的程序无法运行。我要i要存储在两个元素中的值
nums[0] = 1nums[1] = 2 。我还想添加这两个元素并检查总和是否小于或等于 50。我已经在数组中分配了两个元素,这意味着 nums想要添加并检查 i 的当前两个元素并清除并添加接下来的两个元素并检查其是否小于或等于 50。

nums[0]=1;
nums[1]=2; check <=50 . fails clear the the array elements and store next i value
nums[0]=3;
nums[1]=4; check <=50 . fails clear the the array elements and store next i value
...
nums[0]=25;
nums[1]=26; check <=50 .

最佳答案

有很多方法可以做到这一点,但这里有一个巧妙的技巧可以解决此类问题。

int[] nums = new int[2];

for (int i = 0; i < 100; i++) {
nums[i % nums.length] = i + 1;

if (nums[0] + nums[1] <= 50) {
System.out.println("sum is less than or equal to 50");
break;
}
}

mod 运算符 (%) 的作用是根据数组的长度计算 i 的余数。这确保了 i 从 0 到 99,但数组索引始终“重置”并保持在数组的范围内。例如,在 i == 0i == 1 之后,i 将在 i == 2 处递增到超出范围但是2 % 2 == 0。当i == 3时,3 % 2 == 1等等。

但作为旁注,您所描述的条件(“如果总和小于或等于 50...它应该中断”)将立即得到满足(总和 1 位于 nums[0]0 位于 nums[1]),并且循环将不会在第一次迭代之后执行(i == 0)。我不确定这就是你想要的。您的意思是“小于或等于 50”吗?

int[] nums = new int[2];

for (int i = 0; i < 100; i++) {
nums[i % nums.length] = i + 1;

if (nums[0] + nums[1] > 50) {
System.out.println("sum was NOT less than or equal to 50");
break;
}
}

作为替代解决方案,找到此结果可以大大缩短为以下 while 循环:

int i = 0;

// note sum of two consecutive integers will never be even (never 50)
while (i + ++i < 50);

System.out.println("min increments with sum > 50 was " + (i - 1) + " and " + i);

输出是总和 > 50 的最小增量为 25 和 26

关于java - 使用循环添加两个数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20247744/

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