给定条件的数组总和

时间:2019-03-04 17:12:53

标签: java arrays

问题是要在满足以下条件的情况下打印数组的总和:

  

如果数组的连续顺序为6和7,则忽略6和7之间的数字,并考虑其他数字进行求和。

示例输出:

  

输出:对于[10,3,6,1,2,7,9] [即10 + 3 + 9]

为22      

输出:对于[7,1,2,3,6]

为19      

输出:[1,6,4,7,9,1]的12:10

我的代码:

int sum=0;
for (int i=0; i<n.length-1; i++) {
    if (n[i]==6 && n[i+1]==7) {
         continue;
     }
     else{
         sum+=n[i];
     }
}
System.out.println(sum);

我没有得到预期的输出。我知道我的逻辑并不完美,但我不知道该怎么做。因此,任何帮助或指导都将非常有帮助。 预先感谢。

5 个答案:

答案 0 :(得分:1)

可以通过查找7的嵌套循环来完成,尽管根据如何处理嵌套6和7会变得棘手。在下面的示例6、6、7中,中间的6被忽略了:

foreach(var rec in xamDataGrid.RecordManager.GetFilteredOutDataRecords())
{
  // TODO: ...
}

答案 1 :(得分:0)

 int[] n = {10,3,6,1,2,7,9};
 int sum = 0,d=0;    
 for(int i=0;i<n.length-1;i++){
     if(n[i]==6){
         for(int j=n.length-1;j>=0;j--){
             if(n[j]==7)
             break;
             d=d+n[j];
         }
         break;
      }
     sum=sum+n[i];
  }
 System.out.println(d+sum); 
 }

答案 2 :(得分:0)

    int sum=0,i;
    boolean add = true;
    int[] array = new int[]{1,6,4,7,9};
    for(i=0; i<array.length;i++)
    {

        if(array[i] != 6 && add==true)
            sum = sum+array[i];
        else if(array[i] == 6){
            if((i+1) == array.length)
                sum = sum+array[i];
            else
                add = false;
        }
        else if(array[i] == 7)
            add = true;
    }
    System.out.println(sum);

答案 3 :(得分:-1)

这是高级的东西。这是您遇到的问题的代码。

import java.util.*;
public class Hello {

    public static void main(String[] args) {
        int[] n= {10,3,6,1,2,7,9};
        int sum=0;
        int[][] x=check(n);
        System.out.println(Arrays.toString(x[0]));      
        if(x[0][0]==6 && x[1][0]==7) {
            for(int k=0;k<x[0][1];k++) {
                sum=sum+n[k];
            }
            for(int k=x[1][1]+1;k<n.length;k++) {
                sum=sum+n[k];
            }   
        }
        else {
            for(int i=0;i<n.length;i++)
            {
                sum=sum+n[i];
             }
        }
         System.out.println(sum);
    }

    //function for if is 6 and 7 available in sequence and return that with indexex
    public static int[][] check(int[] a) {
        int[] x=new int[2];
        int[] y=new int[2];
        int j;
        for(int i=0;i<a.length;i++) {
            if(a[i]==6){
                x[0]=6;
                x[1]=i;
            }
            if(a[i]==7 && x[0]==6){
                y[0]=7;
                y[1]=i;
            }
        }
        int[][] z= new int[2][2];
        z[0]=x;
        z[1]=y;
        return z;
    }

}

答案 4 :(得分:-1)

    /* I have searched a lot for this . But never found the correct answer .
       Not even in this comments . 
       It will fail for some test cases .
        So , I have come up with my own code checking all test cases except 
       repeating digits .
       So , here is the perfect answer .
       Try this out . If you don't understand this , feel free to mail me
       @komandurimithra@gmail.com  */



    int[] a = new int[] {5,6,10,3,1,7,2,9} ;
    int n =  a.length ;
    int sum = 0 ;
    int extra_sum = 0 ;
    boolean first_six = false ;
    boolean second_seven = false ;
    boolean add = true ;
    for(int i : a)
    {
        if(i == 6)
        {
            add = false ;
            first_six = true ;
        }
        else if(i == 7 && first_six == true)
        {   
            add = true ;
            second_seven = true ;
        }
        if(add == false)
        {
            extra_sum += i ;
        }
        else if(add == true)
        {
            sum += i ;
        }
    }
    if(first_six == true && second_seven == true)
    {
        sum -= 7 ;
    }
    else if(first_six == true)
    {
        sum += extra_sum ;
    }
    System.out.println(sum) ;