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

时间:2013-11-27 16:23:40

标签: java

我正在尝试使用数组的任务:添加两个元素并检查总和是否小于或等于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想要添加并检查{{1}的当前两个元素并清除并添加下两个元素,并检查它是否小于或等于50.

i

4 个答案:

答案 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 == 0i == 1之后,i将增加到i == 22 % 2 == 0之外的界限。 i == 33 % 2 == 1等等。

但是作为旁注,你所描述的条件(“如果总和小于或等于50 ......它应该破坏”)将立即得到满足(总和{{ 1}} 1nums[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的所有数字对以及它们添加的数字。

我接受你可能想要更多东西。 :)