JavaDay06

  • 用户登录,提示用户输入用户名和密码,如果用户名和密码不是”admin”和”123”的话,就提示用户继续输入,最多输入五次
/*
    用户登录,提示用户输入用户名和密码
    如果用户名和密码不是"admin"和"123"的话,就提示用户继续输入
    最多输入五次
*/
import java.util.Scanner;

class Demo01{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String name ="";                            //定义变量保存用户名
        String pwd ="";                             //定义变量保存密码
        int count = 0;                              //统计用户输入的次数

            for ( int i=1 ; i<=5 ; i++ ){
            System.out.println("请输入用户名");
            name = sc.next();

            System.out.println("请输入密码");
            pwd = sc.next();

            //判断是否合法用户
            if ( "admin".equals(name) && "123".equals(pwd) ){
                System.out.println("登录成功");
                break;
            }else{
                System.out.println("用户名或密码不正确,还有" + (5-i) + "次机会");

            }
        }

    }
}
/*
    用户登录,提示用户输入用户名和密码
    如果用户名和密码不是"admin"和"123"的话,就提示用户继续输入
    最多输入五次
*/
import java.util.Scanner;

class Demo02{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String name ="";                            //定义变量保存用户名
        String pwd ="";                             //定义变量保存密码
        int count = 0;                              //统计用户输入的次数

                while ( !("admin".equals(name) && "123".equals(pwd)) ){
            //1)提示用户输入用户名和密码
            System.out.println("请输入用户名");
            name = sc.next();
            System.out.println("请输入密码");
            pwd = sc.next();

            //2)判断是否合法用户,如果合法就提示登录成功并退出循环
            if ( "admin".equals(name) && "123".equals(pwd) ){
                System.out.println("登录成功");
                break;
            }

            //3)统计用户输入的次数
            count++;

            //4)判断非法的次数是否已达5次,如果到了5次就退出循环
            if ( count>=5 ){
                System.out.println("已达到最大输错次数,请稍候重试");
                break;
            }else{

                //5)如果没到5次就提示剩余的次数
                System.out.println("用户名或密码不正确,还有" + (5-count) + "次机会");
            }
        }
    }
}
  • 编写一个程序,从键盘上输入一个十进制正整数,输出它的二进制数
/*
    编写一个程序,从键盘上输入一个十进制正整数,输出它的二进制数
        num == 46;
        shang = num;
        r = num % 2;            //r==0
        shang = num / 2;        //shang==23
        r = shang % 2;          //r==1
        shang = num / 2;        //shang==11
*/
import java.util.Scanner;

class Demo03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个十进制正整数");
        int num = sc.nextInt();

        int shang = num;
        int r = 0;
        String res = "";                //保存余数

        while ( shang != 0 ){
            r = shang % 2;
            res = r + res;
            shang = shang / 2;
        }

        System.out.println("十进制数"+num+"的二进制数为"+res);
    }
}
  • 从键盘上输入一个整数,逆序输出
/*
    从键盘上输入一个整数,逆序输出
    输入:12       输出:21
    输入:123      输出:321
    输入:1234     输出:4321
    就是分别把个位、十位、百位、千位等各位的数字取出来
        个位:num % 10
        十位:num / 10 % 10
        百位:num / 10 / 10 % 10
        千位:num / 10 / 10 / 10 % 10
*/
import java.util.Scanner;

class Demo04 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数");
        int num = sc.nextInt();             //num == 123

        String res = "";                    //保存逆序之后的各个数值

        //如果是负数,先把负号打印出来,把负数变为正数
        if ( num<0 ){
//          System.out.print("-");
            res = res + "-";
            num = -1 * num;
        }

        while ( num != 0 ){
            int r = num % 10;                   //r == 3
//          System.out.print( r );
            res += r;
            num = num /10;                      //num == 12
        }

        //输出
        System.out.println("逆序后的结果"+res);

    }
}
/*
    从键盘上输入一个整数,逆序输出
*/
import java.util.Scanner;

class Demo05 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数");
        int num = sc.nextInt();             //num == -123

        int res = 0;                        //保存逆序之后的数

        while ( num != 0 ){
            int r = num % 10;                   //r == -1
            //构建新的整数
            res = res * 10 + r;                 //res == -321
            num = num / 10;                     //num == 0
        }

        //输出
        System.out.println("逆序后的结果"+res);

    }
}
  • 求1-2+3-4+5-6+7-…+n的和
/*
    求1-2+3-4+5-6+7-...+n的和
*/
import java.util.Scanner;

class Demo06 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数n");
        int n = sc.nextInt();

        int sum = 0;                //保存表达式的和

        for ( int i = 1 ; i <= n ; i++ ){
            if ( i % 2 == 1 ){
                sum += i;
            }else{
                sum -= i;
            }
        }

        System.out.println("sum=" + sum);
    }
}
  • 求1/3 + 3/5 + 5/7 + 7/9 + … + 97/99的和
/*
    求1/3 + 3/5 + 5/7 + 7/9 + ... + 97/99的和
*/
class Demo07 {
    public static void main(String[] args) {
        double sum = 0;                     //保存累加和

        for ( int n = 1 ; n <= 97 ; n += 2 ){
            sum += n / ( n + 2.0 );
        }
        System.out.println( sum );
    }
}
  • 求任意两个数范围内的奇数和
/*
    求任意两个数范围内的奇数和
*/
import java.util.Scanner;

class Demo08 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入两个整数");
        int m = sc.nextInt();
        int n = sc.nextInt();

        //遍历这两个整数m和n范围内所有的数,如果是奇数就累加

        //保证 m < n
        if ( m > n ){
            int t = m;
            m = n;
            n = t;
        }

        int sum = 0;                //保存累加和
        for ( int i = m ; i <= n ; i++ ){
            if ( i % 2 != 0 ){
                sum += i;
            }
        }
        System.out.println( m + "和" + n + "之间的奇数和为" + sum );
    }
}
  • 编写程序,提示用户输入学生的个数,每个学生的名字及其分数,最后显示获得最高分的学生和第二高分的学生信息
/*
    编写程序,提示用户输入学生的个数,每个学生的名字及其分数
    最后显示获得最高分的学生和第二高分的学生信息
*/
import java.util.Scanner;

class Demo09 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生的个数");
        int num = sc.nextInt();

        String name1 = "";          //保存最高分学生的姓名
        int score1 = 0;             //保存最高分学生的成绩
        String name2 = "";          //保存第二高分学生的姓名
        int score2 = 0;             //保存第二高分学生的成绩

        //读取每个学生的名字和分数
        String name = "";           //保存学生的姓名
        int score = 0;              //保存学生的成绩
        for ( int i = 1 ; i <= num ; i++ ){
            System.out.println("请输入学生的姓名");
            name = sc.next();
            System.out.println("请输入学生的成绩");
            score = sc.nextInt();
            //如果刚输入同学的成绩比score1还高,刚输入的学生就是最高分学生信息
            if ( score > score1 ){
                //原来第一高分变为第二高分
                score2 = score1;
                name2 = name1;

                score1 = score;
                name1 = name;
            }else if ( score > score2 ){
                score2 = score;
                name2 = name;
            }
        }

        //输出结果时,根据学生的个数决定是否输出第二高学生的信息
        if ( num >= 2 ){
            System.out.println("姓名:" + name1 + "最高分:" + score1);
            System.out.println("姓名:" + name2 + "第二高分:" + score2);
        }else if ( num >= 1){
            System.out.println("姓名:" + name1 + "最高分:" + score1);
        }else{
            System.out.println("没有学生");
        }

    }
}
  • 判断一个数是否为素数,素数又叫质数,是除了1和它本身之外不能被其它数整除的数
/*
    判断一个数是否为素数,素数又叫质数,是除了1和它本身之外不能被其它数整除的数
*/
import java.util.Scanner;

class Demo10 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数");
        int num = sc.nextInt();

        //先假设num是素数
        boolean isPrime = true;

        //从2到num-1,如果有一个数能把num整除,说明num不是素数
        for ( int x=2 ; x<num ; x++ ){
            //如果有一个数x能把num整除,说明num不是素数
            if ( num%x == 0 ){
                isPrime = false;            //修改素数标志
                break;
            }
        }

        //根据素数标志isPrime来判断是否为素数
//      if ( isPrime == false ){
        if ( !isPrime ){
            System.out.println(num + "不是素数");
        }else{
            System.out.println(num + "是素数");
        }
    }
}
/*
    判断一个数是否为素数,素数又叫质数,是除了1和它本身之外不能被其他数整除的数
*/
import java.util.Scanner;

class Demo11 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数");
        int num = sc.nextInt();

        //从2开始找能把num整除的数
        int chushu = 1;
        for ( int x=2 ; x<num ; x++ ){
            //如果有一个数x能把num整除,就保存到除数变量中
            if ( num%x == 0 ){
                chushu = x;
            }
        }

        //如果这个除数比1大,就说明有一个数能把num整除,不是素数
        if ( chushu > 1 ){
            System.out.println(num + "不是素数");
        }else{
            System.out.println(num + "是素数");
        }
    }
}

1 循环嵌套

在一个循环体中又包含另外一个循环,这就是循环的嵌套

  • 打印m行n列的*号,m、n由用户决定
/*
    在屏幕上打印*号,打印的个数由用户决定
*/
import java.util.Scanner;

class Demo12 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入每行打印*号的个数");
        int num = sc.nextInt();
        System.out.println("请输入打印*号的行数");
        int rows = sc.nextInt();

        for ( int i=1 ; i<=rows ; i++ ){
            for ( int x=1 ; x<=num ; x++ ){
                System.out.print("*");
            }
            System.out.println();           //换行
        }

    }
}
  • 打印*号图形
/*
    *
    **
    ***
    ****
    *****
*/
class Demo13 {
    public static void main(String[] args) {
        //有5行,每一行都是打印*号,再换行
        for ( int n=1 ; n<=5 ; n++ ){
            //打印*号,第n行需要打印n个*号
            for ( int x=1 ; x<=n ; x++ ){
                System.out.print("*");
            }
            //换行
            System.out.println();
        }
    }
}
/*
        *
       * *
      * * *
     * * * *
    * * * * *
*/
class Demo14 {
    public static void main(String[] args) {
        //有5行,每一行都是先打印空格,再打印*号,最后换行
        for ( int n=1 ; n<=5 ; n++ ){
            //打印空格,空格的数量==5-行数
            for ( int x=1 ; x<=5-n ; x++ ){
                System.out.print(" ");
            }
            //打印*号,第n行需要打印n个*号
            for ( int x=1 ; x<=n ; x++ ){
                System.out.print("* ");
            }
            //换行
            System.out.println();
        }
    }
}
/*
        *
       * *
      * * *
     * * * *
    * * * * *
     * * * *
      * * *
       * *
        *
*/
class Demo15 {
    public static void main(String[] args) {
        //上半部分
        //有5行,每一行都是先打印空格,再打印*号,最后换行
        for ( int n=1 ; n<=5 ; n++ ){
            //打印空格,空格的数量==5-行数
            for ( int x=1 ; x<=5-n ; x++ ){
                System.out.print(" ");
            }
            //打印*号,第n行需要打印n个*号
            for ( int x=1 ; x<=n ; x++ ){
                System.out.print("* ");
            }
            //换行
            System.out.println();
        }

        //下半部分
        for ( int n=4 ; n>=1 ; n-- ){
            //打印空格,空格的数量==5-行数
            for ( int x=1 ; x<=5-n ; x++ ){
                System.out.print(" ");
            }
            //打印*号,第n行需要打印n个*号
            for ( int x=1 ; x<=n ; x++ ){
                System.out.print("* ");
            }
            //换行
            System.out.println();
        }
    }
}
  • 在内层循环中断外层循环
class Demo16 {
    public static void main(String[] args) {

        for ( int x=1 ; x<=10 ; x++ ){                          //外层循环
            for ( int y=1 ; y<=10 ; y++ ){                      //内层循环

                if ( y>=5 ){
                    break;                                      //中断的是包含它的循环,即内循环
                }
                System.out.println("x==" + x + "y==" + y);      
            }
        }
        System.out.println("---------------------------------------------");
        //在内层循环中中断外层循环
        outer:                                                  //定义一个标签
        for ( int x=1 ; x<=10 ; x++ ){                          //外层循环
            for ( int y=1 ; y<=10 ; y++ ){                      //内层循环

                if ( y>=5 ){
                    break outer;                                //中断的是标签标识的循环
                }
                System.out.println("x==" + x + "y==" + y);      
            }
        }
    }
}
  • 打印1~100之间所有的素数
/*
    打印1~100之间所有的素数
*/
class Demo17 {
/*
    public static void main(String[] args) {
        //遍历1~100之间所有的数,如果这个数是素数就打印
        for ( int num=2 ; num<=100 ; num++ ){
            //如果num是素数就打印
            boolean isPrime = true;
            for ( int x=2 ; x<num ; x++ ){
                if ( num%x ==0 ){
                    isPrime = false;
                }
            }
            if ( isPrime ){
                System.out.println( num );
            }
        }
    }
*/
    public static void main(String[] args) {
        //遍历1~100之间所有的数,如果这个数是素数就打印
        for ( int num=2 ; num<=100 ; num++ ){
            //找num这个数,除了1和它本身之外的余数,如果还有就说明不是素数
            int chushu = 1;         //保存num的除数
            for ( int x=2 ; x<num ; x++ ){
                if ( num%x ==0 ){
                    chushu = x;
                }
            }
            if ( chushu==1 ){
                System.out.println( num );
            }
        }
    }
}

2 数组初步

2.1 数组的定义

1)为什么需要数组
保存一个数据可以定义一个变量,如果要保存80个数据?可以通过数组来保存。

2)数组的定义
变量就是内存中的一块存储空间。
数组就是内存中的一块连续的存储空间。

数组定义的格式:
数据类型 [] 数组名 = new 类型 [数组的长度];

数组名里保存的是数组的起始地址。

class Demo18 {
    public static void main(String[] args) {

        //1.数据类型 []数组名 = new 类型 [数组的长度];
        //定义一个数组,可以存储80个同学的成绩
        int [] scoreArr = new int[80];
        /*
            scoreArr是数组名;
            scoreArr的数据类型是int []
            new int[80] 会在内存中分配一块连续的存储空间,这块存储空间可以存储80个int类型的数据
        */

        //在定义数组时,[]也可以写在数组名的后面
        int ageArr[] = new int[80];     //不建议这样写

        //在定义数组的同时,可以给数组的各个元素进行赋值
        int [] arr3 = {12,23,34,45,56};
        /*
            定义了一个数组arr3,这个数组的每个元素是12,23,34,45,56
            这个数组的长度就是初始化时指定的数组元素的个数
        */

        System.out.println("Hello World!");
    }
}

2.2 数组元素的访问

可以通过索引值(下标)来访问数组的各个元素
注意:
在Java中,索引值是从0开始的

class Demo18 {
    public static void main(String[] args) {

        //1.数据类型 []数组名 = new 类型 [数组的长度];
        //定义一个数组,可以存储80个同学的成绩
        int [] scoreArr = new int[80];
        /*
            scoreArr是数组名;
            scoreArr的数据类型是int []
            new int[80] 会在内存中分配一块连续的存储空间,这块存储空间可以存储80个int类型的数据
        */

        //2.通过索引值(下标)实现对数组元素的访问
        //给数组的元素进行赋值
        scoreArr[0] = 78;
        scoreArr[1] = 58;
        scoreArr[2] = 75;
        scoreArr[3] = 99;

        //读取数组元素
        System.out.println( scoreArr[0] );
        System.out.println( scoreArr[1] );
        System.out.println( scoreArr[2] );
        System.out.println( scoreArr[3] );
        System.out.println( "-------------------------------" );

        //3.通过循环遍历数组的各个元素
        //把数组的前10个元素打印到屏幕上
        for ( int i=0 ; i<=9 ; i++ ){
            System.out.println( scoreArr[i] );
        }

        /*4.定义了数组之后,系统会给数组的各个元素进行默认的初始化
            对于数值型数据默认初始化为0
            对于布尔型数据默认初始化为false
            对于字符型数据默认初始化为码值为0的字符
            对于引用类型的数据默认初始化为null
        */


        //5.在定义数组时,[]也可以写在数组名的后面
        int ageArr[] = new int[80];     //不建议这样写

        //6.在定义数组的同时,可以给数组的各个元素进行赋值
        int [] arr3 = {12,23,34,45,56};
        /*
            定义了一个数组arr3,这个数组的每个元素是12,23,34,45,56
            这个数组的长度就是初始化时指定的数组元素的个数
        */

        //7.数组有一个length属性表示数组的长度,即数组元素的个数,数组最大下标=长度-1
        System.out.println( "-------------------------------" );
        for ( int i=0 ; i<arr3.length ; i++ ){
            System.out.println( arr3[i] );
        }

        //8.如果遍历某个集合中所有的数据,还可以使用foreach循环
        System.out.println( "-------------------------------" );
        for ( int x : arr3 ){
            System.out.println( x );
        }
        /*
            依次把arr3数组的每一个元素赋值x变量
            在循环体中可以对x变量进行处理
        */

        //9.通过循环修改数组的元素值
        for ( int i=0 ; i<arr3.length ; i++ ){
            arr3[i] = i*i;
        }
        System.out.println( "-------------------------------" );
        for ( int i=0 ; i<arr3.length ; i++ ){
            System.out.println( arr3[i] );
        }

        //10.foreach循环只是用来读取数组的每一个元素,不能用于修改数组的元素值
        for ( int x : arr3 ){
            x = 123;
        }
        for ( int x : arr3 ){
            System.out.println( x );
        }

        System.out.println("Hello World!");
    }
}
  • 从键盘上输入n个整数保存到数组中,找出最大数
/*
    从键盘上输入n个整数保存到数组中,找出最大数
*/
import java.util.Scanner;

class Demo19 {
    public static void main(String[] args) {
        //1)从键盘上输入整数的个数,就是数组的长度
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入整数的个数");
        int n = sc.nextInt();

        //2)先定义一个数组
        int [] numArr = new int[n];

        //3)读取数据,保存到数组中
        for ( int i=0 ; i<n ; i++ ){
            System.out.println("请输入第"+(i+1)+"个数");
            //读取之后保存到数组中
            numArr[i] = sc.nextInt();
        }

        //打印数组中的每一个元素
        for ( int x : numArr ){
            System.out.println( x );
        }

        //4)从数组中找最大数
        //先假设索引值为0的元素最大,依次从1的位置开始比较
        int max = numArr[0];
        for ( int i=1 ; i<numArr.length ; i++ ){
            if ( numArr[i]>max ){
                max = numArr[i];
            }
        }
        System.out.println( "最大的数为"+max );
    }
}
  • 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换
/*
    某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,
    加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,
    再将第一位和第四位交换,第二位和第三位交换
*/
class Demo20 {
    public static void main(String[] args) {
        int [] data = {3,5,1,8};

        /*
            8,0,6,3
            3,6,0,8
        */

        //每位数字都加上5,然后用和除以10的余数代替该数字
        for ( int i=0 ; i<data.length ; i++ ){
            data[i] = ( data[i] + 5 )%10;
        }

        //将第一位和第四位交换,第二位和第三位交换
        /*
        int t = data[0];
        data[0] = data[3];
        data[3] = t;

        t = data[1];
        data[1] = data[2];
        data[2] = t;
        */
        for ( int i=0 ; i<=1 ; i++ ){
            int t = data[i];
            data[i] = data[data.length-1-i];
            data[data.length-1-i] = t;
        }

        for(int x : data){
            System.out.println(x);
        }
    }
}
  • 把一个数组进行逆序
/*
    把一个数组进行逆序
*/
class Demo21 {
    public static void main(String[] args) {
        int [] data = {23,34,45,56,67,78,89,90,01};
        for ( int i=0 ; i<=data.length/2 ; i++ ){
            int t = data[i];
            data[i] = data[data.length-1-i];
            data[data.length-1-i] = t;
        }

        for( int x : data ){
            System.out.println( x );
        }
    }
}

3 Eclipse的使用

1)工作区
2)透视图,显示各个子视图
3)创建项目
在Eclipse中,不能直接创建类,需要先创建项目,在项目中创建类

选择File-new-JavaProject
或者在Package explore面板中,右键,选择new-JavaProject
4)添加类
5)运行
6)设置字号
7)设置文件编码格式
8)设置智能提示
9)添加已有的类
已有的单独的类,可以使用Eclipse打开,打开之后,不能在Eclipse环境中运行,必须把累添加到项目中才能运行,可以把*.java源文件复制粘贴到当前项目中
10)乱码
当前Eclipse的工作区的文件编码格式已经设置为了utf-8,如果java源文件的文件编码格式不是utf-8,就可能产生乱码。

在记事本中打开源文件,选择另存为,在另存为的时候,修改文件编码格式为utf-8,重新复制粘贴到当前项目中
11)添加已有的项目

4 包

4.1 包的定义

1)包是用来管理类的,就类似于使用文件夹管理文件一样

2)常用的系统包:
java.lang Java语言的基础包,这个包系统会自动导入,这个包中的类可以直接使用
java.io Java的IO流类所在的包
java.net 访问网络用到的类
java.util 常用工具类

3)自定义包
可以在源文件的第一条语句,使用package关键字定义包
在Eclipse环境中,定义了包之后,会生成对应的文件夹

package day0602;        //定义包

public class Demo01 {

    public static void main(String[] args) {

        System.out.println("hello eclipse");

    }

}

注意:
1)包名一般使用公司域名的倒序+项目名+模块名
2)如果一个类定义在包中,这个类的完整类名就变为:包名.类名
如:Demo01类的完整类名为:day0602.Demo02

4.2 使用其它包中的类

package com.bjpowermode.day0602.test1;

import java.util.Scanner;           //导入系统类

import day0602.Demo02;              //导入自定义的类

/*
 * 使用其它包中的类,需要通过import先把被使用的类导入到当前文件中
 * */

public class Demo {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        //使用其它包中的类
        Demo02.sMethod();
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值