java基础

Java基础

1.输入

        int foot;
        double inch;
        Scanner in = new Scanner(System.in);//输入
        foot = in.nextInt();//英尺
        inch = in.nextDouble();//英寸
        System.out.println(foot);
        System.out.println(inch);
        System.out.println((int)((foot+inch/12.0)*0.3048*100)+"cm");//强制将结果转换为整数
​
​
        int a=6;
        double b=5.0;
        System.out.println(a>=b);//输出为true

2.嵌套的判断语句

        Scanner in = new Scanner(System.in);
        int x,y,z; int max;
        System.out.print("请输入三个数:");
        x = in.nextInt();
        y = in.nextInt();
        z = in.nextInt();
        if(x>y)//嵌套
        {
            if(x>z) max=x;
            else max=z;
        }
        else {
            if(y>z) max=y;
            else max=z;
        }
        System.out.println(max);

3.switch语句和break的使用

        Scanner in = new Scanner(System.in);
        int type = in.nextInt();
        switch(type) {
        case 1:
        case 2:System.out.println("你好");
        case 3:System.out.println("再见");break;
        case 4:System.out.println("四米马赛");break;
        }
输入:2,输出结果为你好/再见

4.while、do-while循环语句

        int balance = 0; 
        while(true){                                    //循环语句
            System.out.println("请投币: ");
            Scanner in = new Scannera(System.in);
            int amount = in.nextInt();
            if( amount >= 10 ) {
                System.out.println("*****************");
                System.out.println("*Java城际铁路专线*");
                System.out.println("*  无指定座位票   *");
                System.out.println("*  票价:10 元     *");
                System.out.println("*****************");
                System.out.println("找零:" + (amount-10));
            }
            else {
                balance = balance + amount;
                if( balance < 10) {
                System.out.println("您还需再投入"+(10-amount) +"元");}
                else{
                    System.out.println("*****************");
                    System.out.println("*Java城际铁路专线*");
                    System.out.println("*  无指定座位票   *");
                    System.out.println("*  票价:10 元     *");
                    System.out.println("*****************");
                    System.out.println("找零:" + (balance-10));
                    balance = 0;
                }
            }
        }
while语句是先判断是否满足循环条件再执行
    
        int number = in.nextInt();
        int count = 0;
        do  //先执行再判断是否满足循环条件
        {
            number = number / 10;
            count = count +1;
            System.out.println("number="+number+";count="+count);
        } while(number > 0); //注意分号
        System.out.println(count);
do-while语句是先执行再判断是否满足循环条件

5.猜随机产生数

        Scanner in = new Scanner(System.in);
        //猜随机产生数
        int number = (int)Math.random()*100+1;// [0,1)-->[0,100)-->[1,100]  计算机随机产生1~100的数字
        int count = 0;
        int a;
        do{
            a = in.nextInt();
            count = count + 1;
            if(a>number)
            {
                System.out.println("偏大");
            }
            else if(a<number)
            {
                System.out.println("偏小");
            }
        }while(a!=number);
        System.out.println("恭喜你猜对了,你猜了"+count+"次");

6.求平均数

        int number;
        int sum = 0;
        double x;
        number = in.nextInt();
        int count = 0;
        while(number != -1){
            sum = sum + number;
            count = count + 1;
            number = in.nextInt();
        }
        x = sum / count;
        if(count > 0) {
            System.out.println("平均数为:"+ x +";共有"+count+"个数相加");
        }

7.整数分解

        int number;
        number = in.nextInt();
        int result = 0;
        int x;
        do {
            x = number % 10;
            result = result*10 + x;
            System.out.println(x);
            number = number / 10;
        }while(number > 0);
        System.out.println();
        System.out.println(result);

8.阶乘 for循环

        int n = in.nextInt();
        int factor = 1;
        for(int i=1; i<=n; i++) {
            factor = factor * i;
        }
        System.out.println(factor);

9.判断素数

        int n = in.nextInt();
        int x = 1;//0、1做判断使用
        for( int i=2; i<n; i++) {
            if( n%i == 0 ) {
                x = 0;
                System.out.println(n+"不是素数");
                break;//跳出循环
            }
        }
        if( x == 1) {
            System.out.println(n+"是素数");
        }

10.输出100以内的素数or输出前50个素数 嵌套循环

        int amount = 0;
        for( int n=2; n<1000; n++) {
            int x = 1;
            for( int i=2; i<n; i++) {
                if( n%i == 0) {
                    x = 0;
                    break;
                }
            }
            if(x==1) {
                System.out.print(n+" ");
                amount = amount + 1;
                if(amount == 50) break;
            }
        }

11.凑硬币

        int amount = in.nextInt();
        OUT://标号。 给整个循环标号,起名字。
        for(int one = 0; one <= amount; ++one) {
            for(int five = 0; five <= amount/5; ++five) {
                for(int ten = 0; ten <= amount/10; ++ten) {
                    for(int twenty = 0; twenty <= amount/20; ++twenty) {
                        if(one + five*5 + ten*10 + twenty*20 == amount) {
                            System.out.println(one+"张1元,"+five+"张5元,"+ten+"张10元"+twenty+"张20元。");
                            break OUT;
                        }
                    }
                }
            }
        }

12.求和计算

        // 1- 1/2 + 1/3 -1/4 + ...   求和
        int n = in.nextInt();
        double sum = 0.0;
        int sign = 1;
        for(int i =1; i<=n; i++, sign = -sign) {   //for循环中逗号间隔可执行多条语句
            sum = sum + sign*1.0/i;//浮点数与浮点数相加,1必须取1.0
        }
        System.out.printf("%.2f", sum);//取两位小数

13.求最大公约数

        int a = in.nextInt();
        int b = in.nextInt();
        int x= 1;
        for(int i = 2; i<=a && i<=b; i++) {
            if( a%i ==0 & b%i == 0) {
                x = i;
            }
        }
        System.out.println(a+"和"+b+"的最大公约数是"+x);

14.辗转相除法求最大公约数

        //1.如果b等于0,计算结束,a就是最大公约数;
        //2.否则,计算a除以b的余数,让a等于b,而b等于那个余数;
        //3.回到第一步。
        int a = in.nextInt();
        int b = in.nextInt();
        int oa = a,ob = b;
        while( b!= 0) {
            int r = a % b;
            System.out.println(a+","+b+","+r);
            a = b;
            b = r;
        }
        System.out.println(oa+"和"+ob+"的最大公约数是"+a);

15.数组 求平均数并输出大于平均数的数

        int x;
        int[] numbers = new int[100];//定义一个int型数组变量,变量名为numbers
        double sum = 0;
        int count = 0;
        x = in.nextInt();
        while( x != -1) {
            numbers[count] = x;//给数组中的元素赋值
            //number[0、1、2、3...] = x;   将每一个x都记录在一个数组中
            sum = sum + x;
            count = count + 1;
            x = in.nextInt();
        }
        if( count > 0) {
            System.out.println("平均值为:"+sum/count);
            double average = sum/count;
            for(int i = 0; i<count; i++) {
                if(numbers[i] > average) {
                    System.out.println("大于平均值的数有:"+numbers[i]);
                }
            }
    
        }

16.确定数组大小后创建数组/防止出错

        double sum =0;
        int count = in.nextInt();
        if(count > 0) {
            int[] numbers = new int[count];
            for(int i = 0; i<count; i++) {
                numbers[i] = in.nextInt();
                sum = sum + numbers[i];
            }
            double average = sum/count;
            System.out.println("平均值为:"+average);
            for (int i =0; i<numbers.length; i++) {    //数组名.length指数组长度
                if(numbers[i] > average) {
                    System.out.println("大于平均值的数有:"+numbers[i]);
                }
            }
        }

17.数组名只是数据的管理者而不是数据的所有者

        int[] a = new int[10];
        a[0] = 5;
        int[] b = a;//数组变量赋值
        b[0] = 16;
        System.out.println(a[0]);   //数组名只是数组的管理者而不是数据的所有者
输出结果为16

18.创建一个与数组a中数据相同的新数组

        int[] a = {1,2,3,4,5};
        int[] b = new int[a.length];
        for( int i = 0; i<b.length; i++) {   //创建一个与原数组相同的数组
            b[i] = a[i];
        }
        for(int i = 0; i<b.length; i++) {
            System.out.print(b[i]);
        }
        System.out.println();
        boolean isEqu = true;//判断数组中各元素是否相等
        for(int i=0; i<b.length; i++) {
            if(a[i] != b[i]) {
                isEqu = false;
                break;
            }
        }
        System.out.println(isEqu);//两个数组的每个元素都相等
        System.out.println(a==b);//每个元素相等不代表两个数组相等
注:两个数组数据相等,并不等于两个数组相等

19.统计投票

        int x;
        int[] numbers = new int[10];//系统默认数组中各个元素初始值为0
        x = in.nextInt();
        while( x!= -1) {
            if (x>=0 && x<=9) {
                numbers[x]++;
            }
            x = in.nextInt();
        }
        for (int i = 0; i<numbers.length; i++) {
            System.out.println(i+":"+numbers[i]);
        }

20.遍历数组 线性搜索

        int[] data = {1,2,3,4,5};
        int k = -1;//做判断使用
        while(true) {
            System.out.println("请输入:");
            int x = in.nextInt();
            for(int i = 0; i<data.length; i++) {
                if(x == data[i]) {
                    k = i;
                    //break;
                }
            }
            if( k != -1) {
                System.out.println(x+"是第"+(k+1)+"个");
            }
            else {
                System.out.println(x+"不在其中");
            }
        }

21.for-each循环 判断x是否在数组中

        int[] data = {1,2,3,4,5};
        int x = in.nextInt();
        boolean found = false;
        for( int k : data )   //for-each循环   data赋值给k
        {
            if(x==k){
                found = true;
                //break;
            }
        }
        if (found) {
            System.out.println(x+"在其中");
        }
        else {
            System.out.println(x+"不在其中");
        }
for循环中的冒号指迭代,即不断从data里取其元素赋值给临时变量k

22.输出并存放前50个素数

        int[] data = new int[50];
        data[0] = 2;
        int count = 1;
        OUT: //循环命名
        for(int x = 3; count<50; x++) {
            for(int i = 0; i<count; i++) {
                for(int j = 0; j<count; j++){
                    if( x % j == 0) {
                        continue OUT; //直接跳转到最外层循环
                    }
                }
            }
            data[count++] = x;
        }
        for(int k:data) {
            System.out.print(k+" ");
        }

23.筛选法求出100以内的所有素数

        boolean[] isPrime = new boolean[100];
        for(int i=0; i<isPrime.length; i++) {
            isPrime[i] = true;
        }
        for(int i=2 ;i<isPrime.length; i++) {
            if(isPrime[i]) {
                for(int k=2; i*k<isPrime.length; k++) {
                    isPrime[i*k] = false;//主动求出存在除了1和数本身之外其他因数的数并将其在boolean数组中的值改为false,最后只输出数组中true值所对应的i值
                }
            }
        }
        for(int i=2; i<isPrime.length; i++) {
            if(isPrime[i]) {
                System.out.print(i+" ");
            }
        }

24.Math类 (M大写)

        //Math类
        // abs 求绝对值
        // pow 求幂次
        // random 给随机数
        // round  做四舍五入
        System.out.println(Math.abs(-12));//求绝对值
        System.out.println(Math.round(10.345));//做四舍五入
        System.out.println(Math.random()*100); //计算机随机一个0~100之间的数
        System.out.println(Math.pow(2,3)); //求2的3次方

25.字符串变量

        String s = new String("Hello");
        System.out.println(s+" World");
​
        String s;
        Scanner in = new Scanner(System.in);
        s = in.nextLine();//输出整行
        s = in.next();//输出一个词,由空格分隔
        System.out.println(s);
与数组名类似,字符名只是数据的管理者而非所有者
    
        String s1 = "abc";//双引号
        String s2 = "abb";
        System.out.println(s1.compareTo(s2));//比较字符编码大小,输出1是表示左边的的大,输出-1表示右边的大,输出0表示相等
​
        String s1 = "abc";
        for(int i = 0;i<s1.length();i++){//注意length后面的括号
            System.out.println(s1.charAt(i));//输出字符的第几位
        }
​
        String s1 = "0123456汉字";
        System.out.println(s1.substring(2));//substring()方法为返回字符串的子字符串
        //字符操作都是从第0位开始,上行代码表示从字符第2位开始输出,输出结果为:23456汉字
        System.out.println(s1.substring(2,4));//输出第2位到第4位之间的内容
​
        String s1 = "A123456789";
        System.out.println(s1.indexOf('A'));//单引号,indexOf返回地址,输出结果为:0
        System.out.println(s1.indexOf('3'));
        System.out.println(s1.indexOf('0'));// 0不在字符中,输出为:-1
​
        String s1 = "abcd";
        s1.toUpperCase();//大写指令
        String s2 = s1;
        String s3 = s1.toUpperCase();
        System.out.println(s1);//s1本身没有改变
        System.out.println(s2);
        System.out.println(s3);//字符串操作并不能改变字符串本身,只能由原字符串发展一个新字符串
        //输出结果为abcd/abcd/ABCD

26.创建函数判断素数

    public static boolean isPrime(int i){//boolean做判断时使用,需返回函数值
        boolean isPrime = true;
        for(int k = 2; k<i; k++){
            if(i % k == 0){
                isPrime = fales;
                break;
            }
        }
        return isPrime;
    }
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        System.out.print(isPrime(a));
    }

27.创建求和函数

    public static void sum(int a, int b){//sum()括号里的a,b是参数
        int i;
        int sum; sum = 0;
        for(i=a;i<=b;i++){
            sum += i;//sum = sum + i;
        }
        System.out.println(a+"到"+b+"的和是"+sum);
    }
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        sum(1,10);
        sum(20,30);
        sum(3)
    }

28.二维数组

        int[][] ii = new int[][]{//一维数组中每一个元素都是一个数组,这样数组就是二维数组
            {1,2},//第0个元素
            {4,2}//第1个元素
        };
        int[][] ii0 = new int[2][3]{//第一维部分的长度是2,第二维也就是第一维的每个元素的长度是3
            {1,2,3},{2,4,6}
        };
        int[][] ii1 = new int[2][];//只定义第一维度
​
        int[]x,y[];//特殊写法,x是一维数组,y是二维数组
​
        //二维数组求和
        int[][] arr = new int[][]{
            {3,8,2},
            {2,7},
            {9016}
        };
        int len = arr.length;
        int sum = 0;
        for(int i = 0;i<arr.length; i++){
            for(j = 0;j<arr[i].length; j++){
                sun += arr[i][j];
            }
        }
        System.out.println(sun);

29.数组常见算法

        //求最大值
        int[] arr = new int[]{4,7,8,9,6};
        int max = arr[0];
        for(int i = 0; i<arr.length; i++){
            if(max < arr[i]){
                max = arr[i];
            }
        }
        System.out.println("max:" + max);
​
        //复制数组
        int[] copy = new int[arr.length];//声明一个与arr长度一致的数组
        for(int i = 0; i<arr.length; i++){
            copy[i]  = arr[i];//遍历arr
        }
​
        //将数组arr的值倒序
        int temp = new int[arr.length];
        int k = 0;
        for(int i =arr.length-1;i>=0; i--){
            temp[k] = arr[i];
            k++
        };
        arr = temp;
        for(int i = 0; i<arr.length; i++){
        System.out.println(arr[i]);    
        };

30.冒泡排序

排序思想:相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后,下一次循环是将其他的数进行类似操作。
//4,3,7,1
//4,3,1,7第一轮得到一个最大数字,放到倒数第一位
//3,1,4,7第二轮得到除最后一个数字以外的最大数字,放到倒数第二位
//1,3,4,7第三轮得到除最后两个数字以外的最大数字,放到倒数第三位
        //正序
        int arr[] = new int[]{4,3,7,1};
        int a = 0;
        for(i = 0; i<arr.length-1; i++){//总的循环论次
            for(j = 0;j<arr.length-1-i; j++){//每轮循环的对比次数及排序
                if(arr[j] > arr[j+1]){
                    a=arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = a;
                }
            }
        }
        for(int i = 0; i<arr.length;i++){
            System.out.println(arr[i]);
        }
​
​
        //倒序
        int arr[] = new int[]{4,3,7,1};
        int a = 0;
        for(i = 0; i<arr.length-1; i++){//总的循环论次
            for(j = 0;j<arr.length-1-i; j++){//每轮循环的对比次数及排序
                if(arr[j] < arr[j+1]){
                    a=arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = a;
                }
            }
        }
        for(int i = 0; i<arr.length;i++){
            System.out.println(arr[i]);
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值