part1(七)Java方法

方法

 

//主方法_程序执行的入口
public static void main (String[] args)
//其他遇到过的方法
Scanner sc=new Scanner(System.in);​
sc.nextInt();
sc.next();

使用对象名来调用方法/使用类名去调用方法

方法——用来解决一类问题的代码的有序组合(轮子,函数)

方法声明

与主方法结构相对应

方法在类的内部定义!!!

方法分类

无参无返回值

 

package mythod;
//无参无返回值
public class Mython {
  
  //输出一行*号的方法
  public void printStar() {
    System.out.println("**********************");
  }
  
  public static void main(String[] args) {
    Mython my=new Mython();
    my.printStar();
    System.out.println("hello!");
    my.printStar();
  }

  
}

无参带返回值

Scanner类中的next();就是无参返回值为string类型的

 

package mythod;
//无参有返回值
public class Mython2 {

  public static int area() {
    int area=5*10;
    return area;
  }
  public static void main(String[] args) {
    System.out.println(area());

  }

} 

有参无返回值

 

package mythod;
//有参无返回值
import java.util.Scanner;

public class Mython3 {
  public static void max(float a,float b) {
    if(a>b)
      System.out.println(a);
    else
      System.out.println(b);
  }
  public static void main(String[] args) {
    System.out.println("请输入两个数:");
    Scanner sc=new Scanner(System.in);
    float a=sc.nextFloat();
    float b=sc.nextFloat();
    max(a,b);
  }
}

有参有返回值

 

package mythod;
//有参有返回值
import java.util.Scanner;

//有参有返回值
public class Mython4 {
  public static int fac(int n) {
    int result=1;
    for(;n>0;n--)
      result*=n;
    return result;
  }
  public static void main(String[] args) {
    System.out.println("请输入一个整数");
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    System.out.println(n+"的阶乘为"+fac(n));
  }
}

数组作为方法参数

一维数组参数传值时不需要传入数组大小

 

package mythod;
//数组作为方法参数
public class Mython5 {
 public static void printArr(int[] arr) {
 for(int n:arr)
 System.out.print(n+" ");
 System.out.println();
 }
 
 public static void main(String[] args) {
 int[] arr= {1,2,3,4,5};
 printArr(arr);
 }
 
}​

实例:查找数组中元素

 

package mythod;

import java.util.Scanner;

public class ArrSearch {
  public boolean search(int n,int[] arr) {
    for(int i:arr) {
      if(i==n)
        return true;
    }
    return false;
  }
  public static void main(String[] args) {
    int[] arr={1,2,3,4,5};
    Scanner sc=new Scanner(System.in);
    System.out.print("请输入您想在数组中查找的元素: ");
    int n=sc.nextInt();
    ArrSearch as=new ArrSearch();
    System.out.println(as.search(n,arr));
    
  }

}

方法重载

方法名相同,但参数列表不同。(为了应对不同类型的数据,提高方法的使用效率,减少方法名记忆量)

 

//方法重载案例实现
package mythod;

public class Reload {
  //求int类型的和
  public int sum(int a,int b) {
    return a+b;
  }
  //求double类型的和
  public double sum(double a,double b) {
    return a+b;
  }
  //求数组类型的和
  public int sum(int[] arr) {
    int sum=0;
    for(int i:arr)
      sum+=i;
    return sum;
  }
  public static void main(String[] args) {
    int a=5,b=10;
    int[] arr= {1,2,3,4,5};
    Reload r=new Reload();
    System.out.println("int类型的累加和为:"+r.sum(a,b));
    System.out.println("double类型的累加和为:"+r.sum(2.5,6.5));
    System.out.println("数组类型的累加和为:"+r.sum(arr));
  }
}

相同的方法名可以用于不同的数据类型

基本数据的传值

 基本数据传值到方法中进行计算后,不会对原本的数据进行改变。

数组的传值

数组的传值传递的是首地址,在方法中对数组元素进行的改变会影响到数组本来的值(类似于参数传址)

可变参数列表(已知数据类型但未知个数的变量)

可变参数列表格式:

public void search(int... a)

可以输入任意多个整型数据,也可以直接传入整个数组(无论长度)

可变参数列表必须是参数列表的最后一个参数


package mythod;
//可变参数列表实现
public class Changeable {
  public static void search(int n,int...a) {
    for(int i:a)
    {
      if(i==n) {
        System.out.println(true);
        return;
      }
    }
    System.out.println(false);
  }
  public static void main(String[] args) {
    search(5,1,2,3,4,5,6);

  }

} 

本质上相当于(int[] a)但不能反过来用,数组参数不能输入多个变量

Java默认int...aint[] a等价,因此这两个不能相互重载

可变参数列表所在的方法在重载方法中是最后被访问的(优先级最低)

方法的调试

F6进行下一步

F5进入方法内逐步调试

F7由方法内部返回到调用处

实例:

 

package part1;

import java.util.Scanner;

//Java基础部分实战案例
public class Work {
   
  public int[] insertData() {
    System.out.println("请输入数据");
    Scanner sc=new Scanner(System.in);
    int[] a=new int[10];
    for(int i=0;i<9;i++) {
      System.out.println("请输入第"+(i+1)+"个元素");
      a[i]=sc.nextInt();
    }
    return a;
  }
  public void showData(int[] a,int length) {
    System.out.println("数组元素为:");
    for(int i=0;i<length;i++) {
      System.out.print(a[i]+" ");
    }
    System.out.println();
  }
  public void insertAtArray(int[] a,int n,int k) {
    int[] b=new int[10];
    int i=0;
    for(i=0;i<k;i++)
      b[i]=a[i];
    b[i]=n;
    i++;
    for(;i<b.length;i++)
      b[i]=a[i-1];
    for(int j=0;j<10;j++)
      a[j]=b[j];
  }
  public void divThree(int[] a){
    System.out.println("能被3整除的数据有:");
    for(int i:a) {
      if(i%3==0&&i!=0)
        System.out.print(i+" ");
    }
    System.out.println();
  }
  public void notice(){
    System.out.println("*****************************************");
    System.out.println("  1-插入数据");
    System.out.println("  2-显示所有数据");
    System.out.println("  3-在指定位置处插入数据");
    System.out.println("  4-查询能被3整除的数据");
    System.out.println("  0-退出");
    System.out.println("*****************************************");
  }
  public static void main(String[] args){
    System.out.println("欢迎使用本数据管理程序!");
    System.out.println("请根据提示进行操作");
    Scanner sc=new Scanner(System.in);
    int i;int[] a= {};
    Work w=new Work();
    do{
      w.notice();
      i=sc.nextInt();
      switch(i){
      case 0:{
        break;
      }
      case 1:{
        a=w.insertData();
        break;
      }
      case 2:{
        int len=0;
        for(int k:a) {
          if(k==0)
            break;
          len++;
        } 
        w.showData(a, len);
        break;
      }
      case 3:{
        System.out.println("请输入要插入的数据:");
        int p=sc.nextInt();
        System.out.println("请输入要插入的位置:");
        int q=sc.nextInt();
        w.insertAtArray(a, p, q);
        break;
      }
      case 4:{
        w.divThree(a);
        break;
      }
      default:{
        System.out.println("错误输入!请重新输入!");
        break;
      }
      }
      if(i==0) {
        System.out.println("感谢使用!");
        break;
      }
    }while(true);
  }
}
 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值