java第二周学习总结

第一天:

编程实现获取邮箱名字

import java.util.Scanner;

public class GetEmailName {

       public static void main(String[] args) {

              System.out.println("输入email:");

              String e = new Scanner(System.in).nextLine();

              //email地址e,传递到该方法,

              //并得到方法返回的名字,保存到变量n

              String n = getName(e);

              System.out.println(n);

       }

 

       static String getName(String email) {

              int index = email.indexOf("@");

              if(index == -1) {//找不到

                     return "邮箱格式错误";

              }

              //返回截取的结果

              return email.substring(0, index);

       }

}

index() 函数用于从列表中找出某个值第一个匹配项的索引位置,位置是从0开始的。

indexOf用于返回目标字符串在源字符串中的位置。

indexOf:返回特定子字符串第一次在源字符串中的位置。如果源字符中不存在目标字符,则返回-1。

Substring( , )用于截取字符串。

第二天:

求数字阶乘:

import java.util.Scanner;

 

public class Factorial {

    public static void main(String[] args) {

        System.out.print("输入整数,求阶乘:");

        int n = new Scanner(System.in).nextInt();

        //调用f()方法,把n的值传递到f()方法,求阶乘

        f(n);

    }

 

    public static void f(int n) {

        if(n<0) {

            System.out.println("负数不可以求阶乘");

            return;//方法结束,返回到调用位置继续执行

        }

        if(n == 0) {

            System.out.println("0的阶乘是1");

            return;

        }

        long r = n;

        for(int i=n-1; i>=1; i--) {

            r *= i;

        }

        System.out.println(n+"的阶乘:"+r);

    }

}

多次生成随机数,并打印第一次出现大于0.999 时的次数与生成的随机数

public class ForBreak {

    public static void main(String[] args) {

        // Math.random()可以产生[0,1)的随机浮点数

        // >0.999

        //写一个死循环, i变量用来计次

        for(int i=1; ;i++) {

            double d = Math.random();

            if(d>0.999) {

                System.out.println("第"+i+"次产生了目标值,值为:"+d);

                break;

            }

        }

    }

}

第三天:

打印100以内除了尾数为3,5,7的所有数。

public class ForContinue {

    public static void main(String[] args) {

        for(int i=1;i<=100;i++) {

            int y = i%10;//100以内的数,通过取余求出尾数

            if(y==3 || y==5 || y==7) {

                continue;//如果尾数为3 5 7 ,则跳过后面的打印,进行下一轮循环

            }

            System.out.println(i);

        }

    }

}

求质数:import java.util.Scanner;

 

public class PrimeNumber {

    public static void main(String[] args) {

        System.out.print("请输入要判断的自然数:");

        int n = new Scanner(System.in).nextInt();

        //调用getPrimeNumber()方法,判断n是否为质数

        getPrimeNumber(n);

    }

    public static void getPrimeNumber(int n) {

        if(n<2) {//此范围内的数均不为质数

            System.out.println(n+"不是质数");

            return;//结束程序

        }

        if(n == 2) {

            System.out.println("2是质数");

            return;

        }

        //在 2到 1+n开方范围(数学理论),找能把n整除的值(这个值也称作因子)

        //如果找到可以把n整除的第三个数,那n就不是质数,反之,n为质数

        double max = 1+ Math.sqrt(n);//max保存的是查找因子的范围

 

        //依次遍历范围内的所有数,验证是否存在n的因子

        for(int i=2; i<max; i++) {

            //判断n能不能被i整除,如果有,说明不是质数

            if(n%i == 0) {

                System.out.println(n+"不是质数");

                return;

            }

        }

        //如果判断了范围内的所有值,没有能整除的,则说明n是质数

        System.out.println(n+"是质数");

    }

}

第四天:

生成一个顺序数组,将这个数组的元素打乱顺序后输出。

import java.util.Arrays;

import java.util.Random;

 

public class ShuffleArray {

    public static void main(String[] args) {

        //调用f()方法,从方法获取一个int[]数组

        int[] a = f();

        //遍历打印数组数据

        for(int i=0; i<a.length; i++) {

            System.out.println(a[i]);

        }

        System.out.println("\n\n----------------");

 

        //把a数组,传递到 shuffle() 方法打乱顺序

        shuffle(a);

        //打印乱序后的数组

        System.out.println(Arrays.toString(a));

    }

 

    public static int[] f() {

        //新建int[]数组,长度5

        //再把它的内存地址存到变量 a

        int[] a = new int[5];

        //遍历访问5个位置,填入1,2,3,4,5

        for(int i=0; i<a.length; i++) {

            a[i] = i+1;

        }

        //返回数组,把数组返回到调用位置

        //本质是把数组地址返回去

        return a;

    }

 

    public static void shuffle(int[] a) {

        for (int i = 0; i < a.length; i++) {

            //随机下标j,范围:[0, a.length)

            int j = new Random().nextInt(a.length);

            int t = a[i];

            a[i] = a[j];

            a[j] = t;

        }

    }

}

第五天:

随机数组的归并问题:

import java.util.Arrays;

import java.util.Random;

import java.util.Scanner;

 

public class  MergingArrays {

          public static void main(String[] args) {

             int[] a = suiJi();

             int[] b = suiJi();

             Arrays.sort(a);

             Arrays.sort(b);

             System.out.println(Arrays.toString(a));

             System.out.println(Arrays.toString(b));

             int[] c = heBing(a, b);

             System.out.println(Arrays.toString(c));

          }

 

          private static int[] suiJi() {

             int n = 5+ new Random().nextInt(6);

             int[] a = new int[n];

             for (int i = 0; i < a.length; i++) {

                a[i] = new Random().nextInt(100);

             }

             return a;

          }

 

          private static int[] heBing(int[] a, int[] b) {

             //新建数组

             int[] c = new int[a.length+b.length];

             //对新数组遍历

             for(int i=0,j=0,k=0;i<c.length;i++) {

                if(j>=a.length) {//j越界,b数组数据一个一个放入新数组

                   //c[i] = b[k];

                   //k++;

                   //continue;

                   System.arraycopy(b,k,c,i,b.length-k);

                   break;

                } else if(k>=b.length) {//k越界,a数组数据一个个放入新数组

                   //c[i] = a[j];

                   //j++;

                   //continue;

                   System.arraycopy(a,j,c,i,a.length-j);

                   break;

                }

                //j和k,较小值放入i位置,并递增

                if(a[j]<=b[k]) {

                   c[i] = a[j];

                   j++;

                } else {

                   c[i] = b[k];

                   k++;

                }

             }   

             return c;

          }

}

posted @ 2022-07-09 09:39  Espen  阅读(80)  评论(0编辑  收藏  举报