首页 > 试题广场 >

记负均正II

[编程题]记负均正II
  • 热度指数:227243 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入 n 个整型数,统计其中的负数个数并求所有非负数的平均值,结果保留一位小数,如果没有非负数,则平均值为0
本题有多组输入数据,输入到文件末尾。

数据范围: ,其中每个数都满足

输入描述:

输入任意个整数,每行输入一个。



输出描述:

输出负数个数以及所有非负数的平均值

示例1

输入

-13
-4
-7

输出

3
0.0
示例2

输入

-12
1
2

输出

1
1.5
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int fcount = 0;
        int zcount= 0;
        int sum = 0;
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            if(a>0){
                sum += a;
                zcount++;
            }else{
                fcount++;
            }
           
        }
        double d = zcount ==0 ? 0.0 :(double)sum/ zcount;
         System.out.println(fcount);
         System.out.println(String.format("%.1f",d));
    }
}
发表于 2023-08-28 14:14:39 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int sum = 0;
        int countFu = 0;
        int countNoFu = 0;
        int num;
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            num = in.nextInt();
            if (num < 0) {
                countFu++;
            } else {
                sum += num;
                countNoFu++;
            }
        }

        double a = countNoFu == 0.0 ? 0.0 :  1.0 * sum / countNoFu ;
        System.out.println(countFu);
        System.out.println(String.format("%.1f", a));
    }
}


发表于 2023-07-01 11:25:20 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int positive = 0;
        int negative = 0;
        int sum = 0;
        while (in.hasNext()) {
            int n = in.nextInt();
            if (n > 0) {
                sum += n;
                positive ++;
            } else {
                negative++;
            }
        }
        double d = positive == 0 ? 0.0 : (double) sum / positive;
        System.out.println(negative);
        System.out.println(String.format("%.1f", d));
    }
}

发表于 2023-06-09 11:06:27 回复(1)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        ArrayList<Integer> list=new ArrayList<>();
        int sum=0;
        while(in.hasNext()){
            int num=in.nextInt();
            if(num<0){
                sum++;
            }else if(num>0){
                list.add(num);
            }
        }
        Double result=0.0;
        for(int i=0;i<list.size();i++){
            result+=list.get(i);
        }
        result=result/list.size();
        System.out.println(sum);
        if(list.size()==0){
            System.out.print(0.0);
            return;
        }
        System.out.print(String.format("%.1f",result));
    }
}

发表于 2023-06-07 11:17:26 回复(0)
 public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
            long ffTotal = 0;
            long ffCount = 0;
            long n = 0;
        while (in.hasNextLong()) { // 注意 while 处理多个 case
            long b = in.nextLong();
            if(b>=0){
                ffTotal+=b;
                ffCount++;
            }
            n++;
        }
            System.out.println(n-ffCount);
            if(ffCount==0){                
                System.out.println(0.0);
            }else{
                double p = Math.round((double)ffTotal*10/(double)ffCount)/10.0;                    System.out.println(p);
            }
    }
发表于 2023-04-20 21:46:52 回复(0)
"如果没有非负数,则平均值为0" 本来是这样描述的,但是最终要求还是得等于0.0
就不能严谨一点吗?
发表于 2022-10-09 22:03:50 回复(0)
 
import java.util.Scanner;
import java.lang.Integer;
import java.util.ArrayList;
public class Main {
    public static void main(String[] args)  {
  test();

    }
    
    public static void test() {

        Scanner sc = new Scanner(System.in);
        ArrayList<Integer> list = new ArrayList<>();
        int count = 0;

        int sum = 0;
        double avg=0;
        String s = sc.nextLine();
        String[] split = s.split(" ");

        for (int i = 0; i < split.length; i++) {
           int num = Integer.valueOf((split[i]));
            if (num < 0) {
                ++count;
                continue;
            }
            list.add(num);
        }
        System.out.println(count);
        if (list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                sum += list.get(i);
            }
           avg= (double)sum / (list.size());
            System.out.printf("%.1f",avg);

        } else {
            System.out.println(0.0);
        }
        sc.close();
    }
}
看来是多行的题目,这么做不对?

发表于 2022-08-28 22:11:14 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int positiveCnt = 0;
        int negativeCnt = 0;
        int sum = 0;
        while(sc.hasNext()){
            int n = sc.nextInt();
            if(n>0){
                sum += n;
                positiveCnt++;
            }else{
                negativeCnt++;
            }
        }
        double res = positiveCnt==0 ? 0.0:sum*1.0/positiveCnt;
        System.out.println(negativeCnt+"\n"+String.format("%.1f",res));
    }
}

发表于 2022-08-03 16:19:51 回复(0)
import java.util.*;
public class Main{
    public static void main(String[]args){
        Scanner sc = new Scanner(System.in);
        int positiveCnt = 0;
        int negativeCnt = 0;
        int sum = 0;
        while(sc.hasNext()){
            int n = sc.nextInt();
            if(n>0){
                sum += n;
                positiveCnt++;
            }else{
                negativeCnt++;
            }
        }
        double res = positiveCnt==0 ? 0.0:sum*1.0/positiveCnt;
        System.out.println(negativeCnt+"\n"+String.format("%.1f",res));
        
    }
}

发表于 2022-07-12 18:56:16 回复(0)
import java.util.*;
import java.math.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        float count1 = 0;
        int count2 = 0;
        float sum = 0;
        while (sc.hasNextInt()){
            int cur = sc.nextInt();
            if (cur >= 0){
                count1++;
                sum += cur;
            }else{
                count2++;
            }
        }
        System.out.println(count2);
        BigDecimal val1 = BigDecimal.valueOf(sum);
        BigDecimal val2 = BigDecimal.valueOf(count1);
        System.out.println(val2.floatValue() == 0 ? 0.0f : val1.divide(val2, 1, RoundingMode.HALF_UP).floatValue());
    }
}

发表于 2022-07-08 23:57:39 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int numOfNeg = 0;
            int numOfNonNeg = 0;
            double sumOfNoneNeg = 0.0;
            while (in.hasNextDouble()) {
                double x = in.nextDouble();
                if (x < 0.0) {
                    numOfNeg++;
                } else {
                    sumOfNoneNeg += x;
                    numOfNonNeg++;
                }
            }
            System.out.println(numOfNeg);
            if (numOfNonNeg == 0) {
                System.out.println(0.0);
            } else {
                System.out.println(String.format("%.1f", sumOfNoneNeg / (double)numOfNonNeg));
            }
        }
    }
}

发表于 2022-05-30 14:13:51 回复(0)
牛客好奇怪,有的难题标签是简单题,有的难题标签是简单题。
这题目感觉简单题算不上吧。
发表于 2022-05-09 12:28:35 回复(1)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        float sum=0;
        float count1=0;
        int count2=0;
        while(sc.hasNextInt()){
            int n=sc.nextInt();
            if(n>=0){
                sum+=n;
                count1++;
            }else{
               count2++; 
            }
        }
        float avg=sum/count1;
        System.out.println(count2);
        if(count1>0){//存在没有整数的情况,如果还输出sum/count1,0/0是非法的
        System.out.print(String.format("%.1f",avg));
       //保留一位小数的正确输出方式
        }else{
         System.out.print(0.0);   
        }
    }
}
发表于 2022-04-01 16:19:13 回复(0)
出这题有毛病,又没有说输入多少行,怎么知道输入结束?以上通过的代码在ide平台根本无法运行。不知道多少行就无法跳出循环去统计
发表于 2022-02-25 15:16:15 回复(2)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //非负数数和
        int pos = 0;
        //非负数个数
        int posCount = 0;
        //负数个属于
        int negCount = 0;
        while(sc.hasNextInt()){
            int n = sc.nextInt();
            if(n >= 0){
                pos += n;
                posCount ++ ;
            }
            if(n < 0){
                negCount++;
            }
           
        }
         System.out.println(negCount);
        if(posCount==0){
            System.out.println(0.0);
        }else{
            System.out.printf("%.1f",(double)pos/posCount);
        }
    }
}

发表于 2021-12-02 00:04:12 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count = 0;
        int count2 = 0;
        int total = 0;
        while (sc.hasNext()) {
            int temp = sc.nextInt();
            if (temp >= 0) {
                total += temp;
                count2 ++;
            } else {
                count ++;
            }
        }
        System.out.println(count);
        if (count2 == 0) {
            System.out.println(0.0);
        } else {
            System.out.printf("%.1f%n", (double) total / count2);
        }
    }
}

发表于 2021-11-08 18:15:03 回复(0)
......
int countfu = 0;
int countsum = 0;
float countzeng = 0;
......
float f = countsum/countzeng;
......
最开始看到输出结果愣了一下,测试是.1,我是.0
然后想起来最开始把计正数与求正数和都设置为int型变量了。
两个int相除结果还是int型,转换float也没有小数点后数字的。
发表于 2021-10-28 22:25:16 回复(0)
import java.util.Scanner;

//按题意计数和求平均
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        double average=0, sum=0;
        int countNegative=0, countPositive=0;
        int num=0;
        while(sc.hasNext()){
            num = sc.nextInt();
            if(num<0) countNegative++;
            else{
                countPositive++;
                sum += num;
            }
        }
        System.out.println(countNegative);
        if(countPositive>0) average = sum/countPositive;
        System.out.printf("%.1f", average);
    }
}

发表于 2021-08-17 15:43:02 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int countF=0,countZ=0,sum=0;
        while(sc.hasNext()){
            int n=sc.nextInt();
            if(n<0){
                countF++;
            }
            else if(n>0){
                countZ++;
                sum+=n;
            }
        }
        System.out.println(countF);
        if(countZ==0)
            System.out.println(0.0);
        else
            System.out.println(String.format("%.1f",(double)sum/countZ));
    }
}

发表于 2021-07-15 00:24:42 回复(0)
怎么算输入结束啊,通过的代码在本地运行也报错

发表于 2021-03-05 14:20:18 回复(2)

问题信息

难度:
39条回答 35342浏览

热门推荐

通过挑战的用户

查看代码