java学习第一天1.3

Java编程基础教程

第三课

方法(函数) 
          用来完成特定功能的代码片段

public class helloworld{
void hello(){}   //hello(){} 方法
}

        
方法中的参数
              形式参数:在方法被调用时用于接收外界输入的数据

              实际参数:调用方法时实际传给方法的数据

 

 

public class helloworld{
void hello(int a,int b){}   //括号中的a, b 就是形式参数
public static void main(String[] args){
       hello(1,2);}  //括号中的1,2就是实际参数
}

 

方法中的返回值
              返回值类型:方法要返回的结果的数据类型
                   若一个方法没有返回值,必须给出返回值类型void


              返回值:方法在执行完毕后返还给调用者的数据

              return  --> 语句终止方法的运行并指定要返回的数据

public class helloworld{
int hello(int a,int b){  //返回值类型为int
returne a+b;}   //返回值为 a+b 然后就终止方法的运行
public static void main(String[] args){
       hello(1,2);} 
}

 


方法的调用
          对象变量名.方法名(实参列表);

               实参的数目、数据类型和次序必须和所调用的方法声明的形参类表匹配


方法的重载
          一个类中可以定义有相同一个相同的名字,但参数列表不同的多个方法
         条件:
             1、在同一个类中
             2、方法名相同
             3、参数列表不同(类型,大小,数量)

class hello{
void name(int a){}
void name(int a,int b){}          //hello类里面的方法都是重载
void name(int a,double b){}
void name(){}


}

 

递归算法
          递归算法-3的阶乘

 

原理图:

132201_ztNu_2542711.png

public class Test {
  
 public static int multiply(int n){
  
     if( n == 1|| n == 0) {
     
      return 1;
        }
else {
          
 return n * multiply(n-1);
        }
 
  }
   
public static void main(String[] args){

        System.out.println(multiply(3));
 
  }

}

 


作业

1、从键盘输入两个数a、b求出其最大公约数和最小公倍数

  //最小公约数[最容易理解的]
  int a = 4453;
  int b = 5767;
  int max = a > b? a : b;
  int min = a < b? a : b;
  if (max % min == 0) {
   System.out.println(min);
  }else{
   for(int i = min; i > 1; i--){
    if(a % i == 0 && b % i == 0){
     System.out.println(i);
    }
   }
  }

  
  5767÷4453=1余1314
  4453÷1314=3余511
  1314÷511=2余292
  511÷292=1余219
  292÷219=1余73
  219÷73=3
  
  【辗转相除法】
  if (a < b) {// a中放大数
   int temp = a;
   a = b;
   b = temp;
  }
  while (b != 0) {
   int r = a % b;
   a = b;
   b = r;
  }
  System.out.println("这俩个数的最大公约数是:" + a);

 

 


先求最大公约数,最小公倍数就是他们的积除以最大公约


2、输入1个年份,判断该年是否是闰年
//1.普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年)
//2.世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
//3.对于数值很大的年份,这年如果能整除3200,并且能整除172800则是闰年。如172800年是闰年,86400年不是闰年(因为虽然能整除3200,但不能整除172800)(此按一回归年365天5h48'45.5''计算)。
 

//完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),
//恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。
3、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.
 编程找出1000以内的所有完数。
 public static void main(String[] args) {
  int sum = 0, i, j;
  for (i = 1; i <= 1000; i++) {
   for (j = 1, sum = 0; j <= i / 2; j++) {
    if (i % j == 0)
     sum += j;
   }

   if (sum == i)
    System.out.println("完数:" + i);
  }
 }
 
 
 
4、查找100之内的所有质数
 public static void main(String[] args) {
  for (int i = 2; i <= 100; i++) {
   int temp = (int) Math.sqrt(i);
   if (i <= 3) {
    System.out.println(i + " is a prime");
   } else {
    for (int j = 2; j <= i; j++) {
     if (i % j == 0) {
      break;
     }
     if (j >= i) {
      System.out.println(i + " is a prime");
     }
    }

   }
  }
 }

5、写程序,分解质因数  eg: 输入 60, 输出 60 = 2 * 2 * 3 * 5 
 public static void main(String[] args) {
  int n = 60;
  System.out.print(n + "=");
  for (int i = 2; i < n + 1; i++) {
   while (n % i == 0 && n != i) {
    n /= i;
    System.out.print(i + "*");
   }
   if (n == i) {
    System.out.println(i);
    break;
   }
  }
 }
 
6:打印等腰
         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
----*
---***
--*****
-*******


public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  while(true){
   System.out.println("请输入三角形的层数输入0退出:");
   int n = scanner.nextInt();
   if(n == 0){
    break;
   }
   
   for(int i = 1; i <= n; i++){

    //打印空格的循环, j < n -i, 因为个数需要动态变化
    //而n是固定的,而i是递增的,n - i 递减的
    for(int j = 0; j < n-i; j++){
     System.out.print("-");
    }
    
    for(int j = 0; j < 2*i - 1; j++){
     System.out.print("*");
    }
    
    System.out.println();
   }
   
   //下面一部分
   for(int i = n -1; i > 0; i--){
    
    for(int j = 0; j <n - i; j++){
     System.out.print("-");
    }
    
    for(int k = 0; k < 2*i-1; k++){
     System.out.print("*");
    }
    System.out.println();
   }
  } 
 }

 

转载于:https://my.oschina.net/u/2542711/blog/539617

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值