问题是要在满足以下条件的情况下打印数组的总和:
如果数组的连续顺序为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);
我没有得到预期的输出。我知道我的逻辑并不完美,但我不知道该怎么做。因此,任何帮助或指导都将非常有帮助。 预先感谢。
答案 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) ;