《Java从入门到精通》第9章 数字处理类 习题

1.尝试开发一个程序,获取2-32之间(不包括32)的六个偶数,并取得这六个偶数之和

public class Ousum {
	  public static int GetEvenNum(double num1,double num2){
	        int s =(int)num1+(int)(Math.random()*(num2-num1));//生成范围内随机数字
	        if(s%2==0)//求余等于0就是偶数
	            return s;
	        else{
	            return s+1;//求余不等于0就加1
	        }
	    }	  
	//判断是否有相同的偶数
	  public static boolean Isou(int[] num){
	  for(int i=0;i<num.length;i++){
	  for(int j=i+1;j<num.length;j++){
	  if(num[i]==num[j]){
	  return true; //偶数相同就返回true
	  }
	  }
	  }
	  return false;//不同返回false
	  }	 	  	 	  
	    public static void main(String[] args) {
	 
	    	boolean b=true;
	        int sum=0;
	        int a[]=new int[6];//循环6次
	     do {
	    	   if(b) { 		     	       
	        for(int i=0;i<6;i++){
	        	
	            new Ousum();//类初始化
	            a[i]=Ousum.GetEvenNum(2,32);//调用方法并赋值
	            sum=sum+a[i];//求和         
	            }	        	
	    	   }	    	 
	    	   b=Isou(a);  	    	   
	        } 		      
	       //每个偶数不相同则运行以下方法
	       while(b);	       
	       System.out.println(b); 
	     
	       for(int i=0;i<a.length;i++){
	    	   //new Ousum();//类初始化
	            //a[i]=Ousum.GetEvenNum(2,32);//调用方法并赋值
	            sum=sum+a[i]; 
	            }	     
	        for(int i=0;i<6;i++){
	            System.out.println("第"+(i+1)+"个偶数为:"+a[i]);
	        }
	        System.out.println("总和为:"+sum);
	    }
}

 

public class OuShu {
	/*
	 * 获取2到32之间的6个偶数,并且求这6个偶数的和
	 */
	public static double Getnumber(double num1, double num2) {// 成员函数,获得随机偶数并加参数:起始和结尾数
		int sum = 0;
		int count = 0;
		// 产生一个num1~num2之间的随机数
		while (count < 6) {
			int tmp = (int) num1 + (int) (Math.random() * (num2 - num1));// random返回的是double型,所以需要强制转换成int
			if (tmp != 0 && tmp % 2 == 0) {
				System.out.println("2到32之间的偶数(不包括32)" + tmp);
				sum = sum + tmp;
				count++;
			}
		}				
		return sum;
	}
	public static void main(String[] args) {
		System.out.println("和为" + Getnumber(2, 32));
	}
}

 

 

2.尝试开发一个程序,定义一个求圆面积的方法,其中以圆半径作为参数,并将计算结果保留5位小数

import java.text.DecimalFormat;
import java.util.Scanner;

public class Qiuyuan {
	 public static String mianji(double rad) {
		 double area=Math.PI*rad*rad;
		 DecimalFormat format=new DecimalFormat("#.00000"); //保留五位小数 return format.format(area);
	    	return  format.format(area);
	    }
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		System.out.println("请输入圆的半径:");
		Scanner sc=new Scanner(System.in);
		int x=sc.nextInt();
		String Srad1=mianji(x);
		System.out.println("面积为:"+Srad1);		
	}
}

3.尝试改写BigDecimalDemo类中的div(double v1,double v2,int b)方法,以不同近似处理模式处理商的精度。

 

import java.math.BigDecimal;

public class BigDecimalDemo {
    @SuppressWarnings("deprecation")
	public BigDecimal div(double v1,double v2,int b,int r) {
        BigDecimal x1=new BigDecimal(Double.toString(v1));
        BigDecimal x2=new BigDecimal(Double.toString(v2));
        return(x1.divide(x2, b, r));
    }   
	public static void main(String[] args) {
		BigDecimalDemo u=new BigDecimalDemo();
        System.out.println(u.div(5.2, 6.3, 10, BigDecimal.ROUND_HALF_UP));
		}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值