我正在尝试使用数组的任务:添加两个元素并检查总和是否小于或等于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] = 1
和nums[1] = 2
。我还想添加这两个元素并检查总和是否小于或等于50.我在数组中分配了两个元素,这意味着nums
想要添加并检查{{1}的当前两个元素并清除并添加下两个元素,并检查它是否小于或等于50.
i
答案 0 :(得分:1)
有很多方法可以做到这一点,但这里有一个很好的技巧可以解决这类问题。
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 == 0
和i == 1
之后,i
将增加到i == 2
但2 % 2 == 0
之外的界限。 i == 3
,3 % 2 == 1
等等。
但是作为旁注,你所描述的条件(“如果总和小于或等于50 ......它应该破坏”)将立即得到满足(总和{{ 1}} 1
和nums[0]
0
)并且循环不会执行超过第一次迭代(nums[1]
)。我不确定那是你想要的。你的意思是“不小于或等于50”?
i == 0
作为替代解决方案,发现此结果可以非常简化为以下循环:
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;
}
}
输出为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);
。
答案 1 :(得分:0)
我相信,你需要多一个循环,去检查每个num [i] + num [i + 1]。您也可以在单个for循环中执行此操作,但为了清晰起见,请尽可能简化代码。(因为您不熟悉java编程;))
public class HelloWorld{
public static void main(String[] args) {
int[] nums = new int[100];
for (int i = 0; i < 100; i++) {
nums[i] = i + 1;
System.out.println(i);
}
for (int i = 0; i < 99; i++) {
System.out.println(nums[i]);
System.out.println(nums[i+1]);
if (nums[i] + nums[i+1] == 50) {
System.out.printf("Successfully finished");
}
}
}
}
答案 2 :(得分:0)
我不确定这是不是你的意思。试一试。
public static void main(String[] args) {
int[] nums = new int[100];
nums[0] =1;
for (int i = 1; i < 100; i++) {
nums[i] = i + 1;
if ((nums[i] +nums[i-1]) >= 50) {
System.out.printf("Successfully finished");
}
}
}
答案 3 :(得分:0)
我不完全确定你的目标是什么。如果您只想添加两个数字(i和i + 1)并查看它们是否小于50,那么您可以使用它。
for (int i =0; i < 100; i++) {
int j = i+1;
int total = i+j;
if((i+(i+1)) < 50) {
System.out.println("Numbers '" + i + "' and '" + j + "' equal '" + total + "'.");
}
}
这将打印出添加到少于50的所有数字对以及它们添加的数字。
我接受你可能想要更多东西。 :)