Java(二)

方法:

Java语言中为什么要引入方法?方法本质是什么?

方法本质就是一段代码,这个代码片段可以完成某个特定功能,并且可以被重复利用。

例:

public class MethodTest01{

   public static void main(String[] args){	
   	//需求:计算50和30的求和
   	MethodTest01.sum(10,20);
   	MethodTest01.sum(20,30);
   	
   }
   
   //定义一个方法,该方法完成两个int类型数据的求和。
   //Method
   public static void sum(int e,int f){
   	int c = e + f;
   	System.out.println(e + "+" + f + "=" + c);
   }
}

方法如何定义,语法:

[修饰符列表] 返回值类型 方法名(形式参数列表)

  {
  方法体;//由java语句构成
  }

1.返回值类型可以是java中任何一种数据类型。
2.如果该方法执行结束之后没有任何返回值,那么返回值类型必须写void
3.如果方法的返回值类型不是void,而是其他的数据类型,那么在方法体中必须保证有“return 值;”语句返回值。
4.注意:如果return语句一旦执行,则标识该方法结束。所以return语句下面不能再编写其他的java语句。
5.方法名只要是合法的标识符即可。
6.方法的形式参数列表参数的个数可以是0个,也可以是1个,可以是多个,如果是多个的话,必须使用“,”隔开。
7.方法的形式参数列表中起决定性作用的是参数的类型,而不是变量名。
8.所有带有static关键字的方法调用的时候应该采用“类名.方法名(实际参数列表);”

例:

public class MethodTest02{

   public static void main(String[] args){
   	
   	//10,20这是实际参数列表(实参)
   	//即使这个方法执行结束之后有返回值,我可以采用放弃接收。
//   	MethodTest02.sumInt(100,23);
   	System.out.println(MethodTest02.sumInt(100,23));
   
   	
   	//不过一般情况下,只要方法有返回值就应该接收。
   	int retValue = MethodTest02.sumInt(100,23);
   	System.out.println(retValue);
   	
   }
   
   
   public static int sumInt(int a,int b){ //int a,int b 叫做形式参数列表(形参)
	   return a + b;
   }
   
}

练习题:

/*
【程序1】
 打印出100-999中所有的"水仙花数",所谓"水仙花数"是指一
 个三位数,其各位数字立方和等于该数本身。例如:
 153是一个"水仙花数",因为153=1的三次方+5的三次方
 +3的三次方。 
 1.程序分析:利用for循环控制100-999个数,每个数分解
 出个位,十位,百位。
*/

public class ShuiXianHua {
	public static void main(String[] args) {
		for(int i = 100;i<1000;i++){
	         if(isNarcissus(i)){
		          System.out.println(i + " 是水仙花数!");
             }
		}
	}
	public static boolean isNarcissus(int num){
                int baiWei = num/100; //百位数值
		int shiWei =  num/10%10;  // 十位数值
		int geWei = num%100%10;   // 个位数值

		if(num == liFang(baiWei) + liFang(shiWei) + liFang(geWei) ){
		    return true;
		}else{
		    return false; 
		}
	}

	public static int liFang(int num){
	    return num * num * num;
	}
}
/*
【程序1】  
 某电信公司的市内通话费计算标准如下:三分钟内0.2元,
 三分钟后每增加一分钟增加0.1元,不足一分钟的按一分
 钟计算。要求编写程序,给定一个通话时间(单位:秒)
 计算出应收费金额。
*/
public class DianHuaFei{
	public static void main(String args[]){
	     int time = 5000;// 通话时间,单位是秒		 
         double money = jiSuanHuaFei(time);
		 System.out.println("通话时间是:" + time + "秒,通话费用是:" + money + "元.");
	}

	/**
	* 计算指定时间所需要的花费
	* @param time 通话的时间
	* @return 通话的费用
	*/
	public static double jiSuanHuaFei(int time){
         double money = 0.0;
		 // 判断通话时间是否在3分钟之内
		 // 3分钟之内,话费 是0.2元
		 if(time <= 180){
		     money = 0.2;
		 }
		 // 3分钟之外
		 else{		     
               // 判断通话时间是否是正分整秒
			  // 非正分正秒,不足一分钟的按一分
			  money = (time-180)/60 *0.1 +0.2;			  
			  if(time % 60 != 0){
				  money += 0.1;
			  }			
		 }
		 return money;
	}
}
/*
程序2】
 某市的出租车计费标准为:3公里以内10元,3公里以后每
 加0.5公里加收1元;每等待2.5分钟加收1元;超过15公里
 的加收原价的50%为空驶费。
 要求编写程序,对于任意给定的里程数(单位:公里)和
 等待时间(单位:秒)计算出应付车费
*/
public class CheFei {
	public static void main(String[] args) {
		
		// 声明变量名称的规范:第一个单词的首字符小写,其余单词的首字符大写
		// 等待时间,单位秒
		int   waitTime = 200;
		// 行驶里程,单位:公里
		double liCheng = 16.6;
		
        double money =  jiSuanCheFei(waitTime,liCheng); 
        System.out.println("行驶里程是:" +liCheng + "公里,等待时间是:" + waitTime + "秒,应付的车费是:" + money + "元." );
	}


    /**
	* 计算等待时间和行驶里程所需要的车费
	* @param liCheng 行驶里程,单位是公里
	* @param waitTime 等待时间 单位是秒	
	* @return  应付的车费
	*/                                                   
	public static double jiSuanCheFei(int waitTime,double liCheng){
		// 计算等待时间的费用
		double timeMoney = jiSuanTimeMoney(waitTime);

		//------------------------------------------
		// 计算行驶里程的费用
		// 判断里程是否在3公里之内
		double liChengMoney = 0.0;
		if(liCheng <= 3.0){
			liChengMoney = 10.0;
		}
		// 3公里了之外
		else{
            // 判断里程是否在15公里之内
			liChengMoney = (int)((liCheng -3.0)/0.5) * 1 + 10.0;			
			if(liCheng > 15.0){
				liChengMoney *= 1.5;
			}
		}

		// 总的车费是时间的费用 + 里程的费用
		double money = timeMoney + liChengMoney;
		return money;
	}

    /**
	* 计算等待时间所需要的车费
	* @param waitTime 等待时间 单位是秒	
	* @return  应付的车费
	*/
	public static double jiSuanTimeMoney(int waitTime){
        // 计算等待时间的费用
		double timeMoney = (waitTime/150)*1;
		return timeMoney;
	}
}

  

  

  

  

原文地址:https://www.cnblogs.com/xiaowei89426/p/5718290.html