黑马程序员技术交流社区
标题:
编写程序,统计输入的正数和负数的个数,求平均值。
[打印本页]
作者:
葛迅
时间:
2013-4-2 03:13
标题:
编写程序,统计输入的正数和负数的个数,求平均值。
本帖最后由 葛迅 于 2013-4-2 13:12 编辑
编写程序,统计输入的正数和负数的个数,并计算这些数的平均值。输入:若干个整数;输出:正数个数、负数个数、平均值。0不参与计数和求平均值,当输入为0时,程序结束。例如:
依次输入: 12 -3 5 -7 0
输出: 正数2个,负数2个,平均值1.75, 共输入5个数字.
求儿大神帮帮忙。。
作者:
刘策
时间:
2013-4-2 07:25
个人认为这个要用到累加思想,和计数器思想。
作者:
邵震
时间:
2013-4-2 08:04
本帖最后由 邵震 于 2013-4-2 08:07 编辑
<div class="blockcode"><blockquote>/**
编写程序,统计输入的正数和负数的个数,并计算这些数的平均值。输入:若干个整数;输出:正数个数、负数个数、平均值。0不参与计数和求平均值,当输入为0时,程序结束。例如:
依次输入: 12 -3 5 -7 0
输出: 正数2个,负数2个,平均值1.75, 共输入5个数字.
思路:
统计总输入个数,在定义两个变量 x,y 对每个数进行对比 大于零x++小于零y++等于零不作处理
对所有数进行累加 然后求平均值。
最后进行打印
*/
class java0402d1
{
public static void main(String[] args)
{
int [] arr =new int [] {12,-3,5,-7,0};
hanshu(arr);
}
public static void hanshu(int [] arr)
{
System.out.print("输入:");
int x=0,y=0;
float z=0;
for (int a=0;a<arr.length ;a++ )
{
if (arr[a]>0)
{
x++;
}
if (arr[a]<0)
{
y++;
}
z+=arr[x];
System.out.print(arr[a]+" ");
}
System.out.println();
System.out.print("正数:"+x+"个,负数:"+y+"个, 平均值:"+(z/arr.length)+"。共输入"+arr.length+"个数字");
}
}
/*
这个是输出结果
输入:12 -3 5 -7 0
正数:2个,负数:2个, 平均值:1.8。共输入5个数字
*/
复制代码
因为我还不会怎么直接从dos命令行输入 所以我是直接把数存在数组里了
作者:
谢达
时间:
2013-4-2 09:04
这题目应该不是很难把。。还是自己多多动脑筋,做出来才有成就感。
作者:
葛迅
时间:
2013-4-2 13:11
邵震 发表于 2013-4-2 08:04
因为我还不会怎么直接从dos命令行输入 所以我是直接把数存在数组里了
数组我才刚刚看到 不是很懂 不过谢谢了 我先收藏了 回来在研究感激不尽
还有你的代码写的很好 很整洁 能不能交个朋友 一起交流
作者:
张源锋
时间:
2013-4-2 15:08
写得比较急,有什么不足的地方请见凉
import java.io.*;
import java.util.*;
public class Mytest {
public static void main(String[] args) throws Exception {
List <Integer> list = new ArrayList <Integer>();
boolean ctr = true;
System.out.println("只可输入整数,输一个数按按回车确认一次,输入sure为确定,输入exit为退出");
InputStreamReader inr =null;
InputStream in = null;
while (ctr){
in = System.in;//这是一个阻塞式的方法,执行到此处要从键盘输入东西才可往往下走
inr = new InputStreamReader(in);//转换成字符流
char [] carr = new char[10];//定义下数组来装从键盘输入的数据
int num = 0;
if((num=inr.read(carr))!=-1){
String str = new String(carr);
if(check(str)){
int i = Integer.valueOf(str.trim());
if(i!=0){
list.add(i);
}
// System.out.println(list.size());
}
if(str.trim().equals("sure")){//确认,退出循环
ctr = false;
}
if(str.trim().equals("exit")){//直接退出,后面的语句将不被执行
return;
}
//System.out.println(ctr+"|"+str.trim()+"|"+str.trim().length());
}
}
int count1 = 0;//计算整数的个数
int count2 = 0;//计算负数的个数
for(int i : list){
if(i>0)count1++;
if(i<0)count2++;
System.out.println(i);
}
double m = mean(list);//求平均数
System.out.println("平均数:"+m+" | 整数个数:"+count1+" | 负数的数:"+count2);
}
//求平均数的方法
public static double mean (List<Integer>list){
int count = 0;
if(list==null||list.size()<1)return 0;
for(int i:list){
count += i;
}
double m = (double)count/list.size();
return m;
}
//判断字符串是否全是数字
public static boolean check(String str){
if(str==null||str.trim().length()<1){
return false;
}
String cstr = str.trim();
char [] sarr = cstr.toCharArray();
for(char c:sarr){
Character chr = Character.valueOf(c);
if(Character.valueOf(sarr[0]).equals('-')){//如果字符串第一个是"-"号跳过
continue;
}
if(chr>'9'||chr<'0'){
return false;
}
}
return true;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2