2016-10-03 82 views
0

问题陈述:如何从给定数组中打印负数子数的数目?

给定n个整数的数组,找到并打印在新的一行其负子阵列的数目(A子阵列是负如果其元素的总和为负值。)

采样输入

1-2 4-5 1

样本输出

结果,我的代码产量

输入(stdin)

1-2 4-5 1

你的输出(标准输出)

期望输出

编译消息

错误答案

我的代码:

import java.io.*; 
import java.util.*; 
import java.text.*; 
import java.math.*; 
import java.util.regex.*; 

public class Solution { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     int n = scan.nextInt(); 
     int a[] = new int[n]; 
     int b[] = new int[n]; 
     int count=0; 
     int i,j,sum = 0; 
     for(i=0;i<n;i++) 
      { 
      a[i] = scan.nextInt();    
     } 
     for(i=0;i<n;i++) 
      { 
     if(a[i]<0){count++;} 
     } 
     for(i=0;i<n;i++) 
      { 
      for(j=0;j<n;j++) 
       { 
      sum = a[i] + sum; 
      b[j] = sum; 
      } 
     } 
     for(j=0;j<n;j++) 
       { 
     if(b[j]<0){count++;} 
     } 
     System.out.println(count); 

    } 
} 

我哪里错了?

+0

什么为b []数组为? – Gaur93

+1

您是否尝试过使用调试器? –

+0

如果我理解正确的要求,我仍然无法找到给定输入的9个组合,并且只能找到6. (1,-2);(4,-5);( - 5,1); (-2,4,-5);( - 2,4,-5,1)(1,-2,4,-5,1)。 我错过了什么? – drgPP

回答

0

对前面的逻辑做了一些改变,现在这段代码工作正常。

import java.util.*; 
public class Solution { 

     public static void main(String[] args) { 
      Scanner scan = new Scanner(System.in); 
      int n = scan.nextInt(); 
      int a[] = new int[n]; 
      int count=0; 
      int i,j,sum = 0; 
      for(i=0;i<n;i++) 
      { 
       a[i] = scan.nextInt(); 
      } 
      scan.close(); 
      for(i=0;i<n;i++) 
      { 
       sum = 0; 
       for(j=i;j<n;j++) 
       { 
        sum = a[j] + sum; 
        if(sum<0){ 
         count++; 
        } 
       } 
      } 
      System.out.println(count); 
     } 
    }