import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int cnt_in = 0;//记录输入的整数个数 int cnt_ac = 0;//记录正数个数 int cnt_ng = 0;//记录负数个数 double avg = 0;//记录平均数 double sum = 0;//记录正整数的和 String input = null; String[] in_str = null; int[] in_int = null; while (in.hasNextLine()) { cnt_in = Integer.parseInt(in.nextLine().trim()); //输入有误,多了个空格 in_str = in.nextLine().split("\\s+"); in_int = new int[cnt_in]; for (int i = 0; i < cnt_in; i++) {//获取整数数组 in_int[i] = Integer.valueOf(in_str[i]); } for (int i = 0; i < cnt_in; i++) { if (in_int[i] > 0) {//正数 cnt_ac++; sum += in_int[i]; } if (in_int[i] < 0) {//负数 cnt_ng++; } } avg = sum / cnt_ac; System.out.println(cnt_ng + " " + String.format("%.1f", avg)); cnt_ac = 0; sum = 0; cnt_ng = 0; } } }
先上代码。输入的数据格式有误,10的那一行多了个空格,需要去空格,否则回报错。
没什么新意的操作。。。先接收一行数据并拆分为字符串数组,再遍历转存到整数数组中,没必要单独拆分成正数数组与负数数组,直接再次遍历即可求出个数、平均值。。。