1 方法(二)

  1) 不带参数没有返回值的方法:
    案例:Demo1

public class Demo1 {
  static void show(){
	System.out.println("努力学习");
	System.out.println("努力工作");
	System.out.println("努力赚钱!");
  }
  public static void main(String[] args) {
	System.out.println("调用show()方法之前");
    show();
    System.out.println("调用show()方法之后");
  }
}

import java.util.Scanner;
public class Demo2 {
//编写一个没有返回值没有参数的方法add(),在add()中
//创建一个Scanner对象,从控制台输入任意的两个整数,
//执行加法运算,并输出运算的结果。
//在main方法中,调用add()方法。
  static void add(){
	Scanner sc = new Scanner(System.in); 
	System.out.println("请输入第1个整数:");
	int num1 = sc.nextInt();
	System.out.println("请输入第2个整数:");
	int num2 = sc.nextInt();
	int sum = num1 + num2;
	System.out.println("sum="+sum);
  }
  public static void main(String[] args) {
	add();
  }
}

public class Demo3 {
//编写一个没有参数没有返回值的方法f1(),在f1()方法中
//分别求出100~1000之间所有奇数累加之和和所有的偶数
//的累加之和,并分别输出。
//在main方法中,调用f1()方法。
  static void f1(){
	int sum1=0,sum2=0;
//sum1保存奇数累加之和,sum2保存偶数累加之和。	
	for(int i=100;i<=1000;i++){	
	  if(i%2!=0){//奇数
		sum1 = sum1+i; 
	  }else{//i%2==0  偶数
		sum2 = sum2+i;  
	  }	
	} 
	System.out.println("奇数累加之和:"+sum1);
	System.out.println("偶数累加之和:"+sum2);
  }
  public static void main(String[] args) {
	f1();
  }
}

public class Demo4 {
//编写一个没有返回值没有参数的方法f1(),在f1()方法
//中,求出公元1~2016之间所有的闰年并输出
//在main方法中,调用f1()
  static void f1(){
	for(int i=1;i<=2016;i++){
	  if((i%4==0&&i%100!=0)||i%400==0){
		System.out.println(i+"是闰年");   
	  }	
	}  
  }
  public static void main(String[] args) {
	f1();
  }
}

import java.util.Scanner;
public class Demo5 {
  static void showYear(){
	Scanner sc = new Scanner(System.in); 
	System.out.println("请输入年份:");
	int year = sc.nextInt();
	if(year>=1){
	  for(int i=1;i<=year;i++){
		if((i%4==0&&i%100!=0)||i%400==0){
		  System.out.println(i+"是闰年");	
		}else{
		  System.out.println(i+"不是闰年");	
		} 
	  }	
	}else{//year<1
	  System.out.println("输入错误");	
	}
  }
  public static void main(String[] args) {
	showYear();
  }	
}

  2) return:终止方法继续往下执行;return后面跟方法的返回值。当方法调用结束以后,通过return,把结果返回到调用的位置。
  3) 不带参数带返回值的方法:
    eg:
      static int add(){
        int num1=100,num2=200;
        int sum = num1+num2;
        return sum;
      }
      main(){
        int result = add();
        System.out.println("result="+result);
      }
  4) 带返回值的方法中声明的返回值类型,跟return后面的返回值的类型一致。最好能定义一个变量来接收返回的结果。
    案例:Demo6

public class Demo6 {
//return: 终止方法继续往下执行;return的后面跟方法
//最终返回的结果。
//带返回的方法要求声明的返回值类型跟return后面的返回
//值的类型一致。最好能定义一个变量来接收返回的结果。
  static int add(){
	int num1=100,num2=200;
	int sum = num1+num2;
	return sum;
  }
  public static void main(String[] args) {
	int result = add();
	System.out.println("result="+result);
  }
}

import java.util.Scanner;
public class Demo7 {
//编写一个没有参数带int类型返回值的方法sub()方法,
//在sub()方法中,创建一个Scanner对象,从控制台
//输入任意的两个整数,执行减法运算,并返回最终运算
//的结果,返回到调用的位置
//在main方法中,调用sub()方法,并输出返回的结果。
  static int sub(){
	Scanner sc = new Scanner(System.in); 
	System.out.println("请输入第1个整数:");
	int num1 = sc.nextInt();
	System.out.println("请输入第2个整数:");
	int num2 = sc.nextInt();
	int result = num1-num2;
	return result;
  }
  public static void main(String[] args) {
	int result = sub();
	System.out.println("result="+result);
  }
}

public class Demo8 {
//编写一个带int类型返回值没有参数的方法f1(),在f1()
//求出1~200之间所有的偶数累加之和并返回到调用的位置
//在main()方法中,调用f1(),并显示运算的结果。
  static int f1(){
	int sum = 0;
	for(int i=1;i<=200;i++){
	  if(i%2==0){
		sum = sum + i; 		
	  }	
	}  
	return sum;
  }
  public static void main(String[] args) {
	int result = f1();
	System.out.println(result);
  }
}

import java.util.Scanner;
public class Demo9 {
//编写一个没有参数带一个int类型返回值的方法max(),
//在max()方法中,从控制台输入任意的两个整数,求出
//较大的整数的值,并返回到调用的位置。
//在main方法中,调用max()方法,并输出返回的结果。
  static int max(){
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入第1个整数:");
	int num1 = sc.nextInt();
	System.out.println("请输入第2个整数:");
	int num2 = sc.nextInt();
//	方法3
	if(num1>=num2){
	  return num1;	
	}else{//num1<num2
	  return num2;	
	}
	
/*	方法2
	int max=0;
	if(num1>=num2){
	  max = num1;	
	}else{//num1<num2
	  max = num2;	
	}
	return max;
        方法1
	int max = num1>=num2 ? num1 : num2;
	return max;
	*/
  }	
  public static void main(String[] args) {
	int result = max();
	System.out.println("较大的整数是"+result);
  }
}

import java.util.Scanner;
public class Demo10 {
  static int f1(){
	Scanner sc = new Scanner(System.in); 
	System.out.println("请输入一个整数:");
	int num = sc.nextInt();
	if(num>=1){
	  int sum = 0;	
	  for(int i=1;i<=num;i=i+2){//奇数
		sum = sum + i; 
	  }
	  return sum;	
	}else{//num<1
	  System.out.println("输入错误");	
	  return 0;
	}
  }
  public static void main(String[] args) {
	int result = f1();
	System.out.println(result);
  }
}

  5) 方法中的参数:
    a) 形参(形式参数):当方法被调用的时候,系统会临时为形参开辟存储空间,用来接收外界传入的数据,参与方法的执行,当方法执行结束以后,释放形参的存储空间(形参不存在了)。
    b) 实参:当方法被调用的时候,把实参的值传递到形参中。
      static void add(int num1,int num2){//形参
        int sum = num1 + num2;
        System.out.println("sum = "+sum);
      }
      main(){
        int a=100,b=200;
        add(a,b);//实参
      }
      实参和形参是一一对应的,把实参的值传递到形参中。
      案例:Demo11

public class Demo11 {
//形参(形式参数):当方法被调用的时候,为形参临时的
//开辟存储空间,用来接收外界传入的数据,参与方法的
//执行,当方法执行结束以后,释放形参的存储空间。
//实参:当方法被调用的时候,把实参的值传递到形参中。
//实参和形参必须是一一对应的。
  static void add(int num1,int num2){//形参
	int sum = num1 + num2;
	System.out.println("sum = "+sum);
  }
  public static void main(String[] args) {
	int a = 300, b = 900;
	add(a,b);//实参
  }
}

import java.util.Scanner;

public class Demo12 {
//编写一个没有返回值带两个int类型参数的方法add(),
//void add(int num1,int num2):执行加法运算,
//并输入运算的结果
//在main方法中,创建一个Scanner对象,从控制台输入
//任意的两个整数作为实参,调用add()方法。
  static void add(int num1,int num2){//形参
	int sum = num1 + num2;
	System.out.println("sum = "+sum);
  }	
  public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入第1个整数:");
	int num1 = sc.nextInt();
	System.out.println("请输入第2个整数:");
	int num2 = sc.nextInt();
	add(num1,num2);//实参
  }
}

import java.util.Scanner;

public class Demo13 {
  static void f1(int num1){
	if(num1>=1){
	  int sum1=0,sum2=0;//sum1保存奇数累加之和;sum2保存偶数累加之和。	  
	  for(int i=1;i<=num1;i++){
		if(i%2!=0){//奇数
		  sum1 = sum1 + i;	
		}else{//偶数
		  sum2 = sum2 + i;	
		}  
	  }
	  System.out.println("奇数累加之和"+sum1);
	  System.out.println("偶数累加之和"+sum2);
	}else{//num1<1
	  System.out.println("输入错误");	
	} 
  }	
  public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入一个整数:");
	int num = sc.nextInt();
	f1(num);
  }
}

  6)Java中永远是值的传递,把实参中的值传递到形参中,对形参的任何修改对实参没有影响。
    案例:Demo14

public class Demo14 {
  static void updateNum(int num){//形参
	num = 2000;
	System.out.println("形参num="+num);
  }
  public static void main(String[] args) {
	int num = 100;
	System.out.println("调用updateNum()" +
			"方法之前,实参num="+num);
	updateNum(num);//实参
	System.out.println("调用updateNum()" +
			"方法之后,实参num="+num);
//在Java中,永远是值的传递。当方法调用的时候,把实参
//的值传递到形参中,对形参任何修改,对实参没有影响。
//所以实参num在调用updateNum()方法之前是100,调用
//了updateNum(num)方法以后,实参num的值还是100。
//形参的修改对实参没有影响。		
  }
}

  7)带返回值带参数的方法
    eg:
      static int add(int num1,int num2){//形参
        int sum = num1 + num2;
        return sum;
      }
      main(){
        int num1=100,num2=200;
        int result = add(num1,num2);//实参
        System.out.println("result="+result);
      }
      案例:Demo15

import java.util.Scanner;
public class Demo15 {
  static int add(int num1,int num2){
	int sum = num1 + num2;
	return sum;
  }
  public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入第1个整数:");
	int num1 = sc.nextInt();
	System.out.println("请输入第2个整数:");
	int num2 = sc.nextInt();
	int result = add(num1,num2);
	System.out.println("result="+result);
  }
}

import java.util.Scanner;

public class Demo16 {
//编写一个带int类型返回值带两个int类型参数的方法
//sub(),int sub(int a,int b),在sub方法中,
//执行减法运算,并返回运算的结果。
//在main方法中,从控制台输入任意的两个整数作为实参,
//调用sub()方法,并输出返回的结果。
  static int sub(int a,int b){
	int result = a-b;
	return result;
  }
  public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入第一个整数:");
	int a = sc.nextInt();
	System.out.println("请输入第二个整数:");
	int b = sc.nextInt();
	int result = sub(a,b);
	System.out.println("result="+result);
  }
}