Java基础(一)

这篇博客主要复习了Java的基础知识,包括基本语法如类和方法的定义,数据类型,运算符;程序流程控制如for和while循环,以及猜数字程序的实现;还介绍了数组的使用,并通过成绩查询程序展示了如何操作二维数组。文章提供了详细的代码示例,适合初学者巩固Java基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:java基础课程学习第一篇博客,主要对java基础的内容进行复习,包括:基本语法格式、程序流程控制、数组这三大部分。

特此说明,此专栏学习内容,是本人在极客上学习的Java基础课程做的整理,有的内容是课程上的代码,课程非常详细,安利一波!

目录

一、基本语法格式

1.1 程序的开始

 1.2 基本数据类型

1.3 运算符

 1.4 应用

1.4.1 整除的程序

二、程序流程控制

2.1 for循环应用

2.2 while循环应用

2.3 猜数字程序

三、数组

3.1 成绩查询程序


一、基本语法格式

1.1 程序的开始

Hello World!

第一个大括号里是类的内容;第二个大括号里是方法体。

类=修饰符+类名+类的内容

方法=修饰符+方法名+参数+方法体

HelloWorld是类名,文件名需要与类名一致

紫色标识的是修饰符

main是方法名,main方法是程序执行的入口

小括号里是方法的参数

双引号引起来的Hello World是字符串

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World.");
    }
}

 1.2 基本数据类型

1.3 运算符

位移运算符:^异或 相同取0,不同取1;~是按位取反 

具体应用可以移步:算法(位运算)

算法篇之(位运算)_MRJJ_9的博客-优快云博客

 基本数据类型的运算,其中精度高低,上图类型种类里按从低到高进行的排序

注意自增自减运算符,a++是先赋值再计算,++a是先计算再赋值

举例,可理解一下下面的代码:

 1.4 应用

1.4.1 整除的程序

 找出1-100可以被7整除的数

用到了自增方法、字符串的拼接、布尔值、数学运算取余

但输出的每行代码都要写,整除余数如果为0,打印true,否则打印false,可以看到程序非常繁琐,后面学到If else、for循环再对此代码做整理。

二、程序流程控制

前面做的整除的程序,非常繁琐,能否用几行代码简单实现呢?

接下来看java中的程序流程控制方法:

2.1 for循环应用

 针对上面写的整除的例子,用if else、for循环来实现

从1开始,如果数小于等于100,就加1,直到加到100,当数大于100时,跳出循环,否则进行判断,如果可以整除,进行打印

public class FindDiv1 {
    public static void main(String[] args) {
        int divsor = 7;
        for (int div = 1; div <= 100; div++) {
            if (div % divsor == 0) {
                System.out.println(div + "可以整除" + divsor);
            }
        }
    }
}

可以看到这次的代码要比上面的简洁不少,并且只输出了可以整除的数 

2.2 while循环应用

用while循环去计算

结束条件是数大于100,如果不满足,则数加1,并且进行判断,可以整除则进行打印

public class FindDiv1 {
    public static void main(String[] args) {
        int divsor = 7;
        int div = 1;
        while (div <= 100) {
            div++;
            if (div % divsor == 0)
                System.out.println(div + "可以整除" + divsor);
        }
    }
}

2.3 猜数字程序

要求:

1、随机生成一个数字;

2、用户猜一个数字,提示用户输入一个指定范围的数字;

3、用户输入数字,输入的次数有限制,不能超出最大限制;

4、如果用户猜的数字大于随机生成的数字,则提示数字猜大了,小于随机生成的数字,提示输入小了,如果猜对了,提示猜对了;

5、每次输入结束后,提示用户还剩几次输入的限制,输入次数为0时,结束本轮游戏,每一轮结束后,提示用户共猜了几次,如果没有猜对,则将随机生成的数字展示出来。

6、提示用户如果想退出程序,输入-1,退出程序后,提示用户猜了几次,如果没有猜对,则将随机生成的数字展示出来。

import java.util.Scanner;
public class GuessNum {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int rangeStart = 30;
        int rangeEnd = 50;
        int guessTotal = 5;
        int correntGuessCount = 0;
        boolean gameEnd = false;
        while (!gameEnd) {
            int totalGameCount = 0;
            int mod = rangeEnd - rangeStart;
            if (rangeStart < 0 || rangeEnd < 0) {
                System.out.println("开始结束必须是正数或0");
            }
            if (mod <= 1) {
                System.out.println("非法的范围:(" + rangeStart + rangeEnd + ")");
            }
            int bigRandom = (int) (Math.random() * rangeEnd * 100);
            int numberToGuess = (bigRandom % mod) + rangeStart;
            if (numberToGuess <= rangeStart) {
                numberToGuess = rangeStart + 1;
            } else if (numberToGuess > rangeEnd) {
                numberToGuess = rangeEnd - 1;
            }
            int leftToGuess = guessTotal;
            boolean currentGameCount = false;
            boolean currentCuess = false;
            totalGameCount++;
            System.out.println("请输入猜测的数字,范围在(" + rangeStart + "," + rangeEnd + ")" + ",输入-1结束游戏");
            while (leftToGuess > 0) {
                System.out.println("剩余猜测次数" + leftToGuess + ",请输入本次猜测的数字:");
                int guess = in.nextInt();
                if (guess < 0) {
                    gameEnd = true;
                    System.out.println("结束游戏");
                    break;
                }
                if (!currentGameCount) {
                    totalGameCount++;
                    currentGameCount = true;
                }
                leftToGuess--;
                if (guess > numberToGuess) {
                    System.out.println("输入的数字比目标数字大");
                } else if (guess < guessTotal) {
                    System.out.println("输入的数字比目标数字小");
                } else {
                    currentCuess = true;
                    correntGuessCount++;
                    System.out.println("输入的数字正确!");
                    break;
                }
            }
            if(!currentCuess){
                System.out.println("本次的目标数字是"+numberToGuess);
            }
            System.out.println("共进行了" + (totalGameCount-1) + "次游戏,猜中的次数是" + correntGuessCount);
        }
    }
}

说明:

获取控制台的输入时用到了这行代码:

Scanner in = new Scanner(System.in);

 声明一个类Scanner,in是一个实例,new创建了一个对象Scanner,其特征是括号里的System.in,表示可以在控制台输入。详细可见后面的面向对象编程部分。

Math.random()这个方法用于获取0-1内的小数,精度是double。

猜数字这个程序用到了基本数据类型int、boolean、类型的转换、while循环,if else语句,应该多加练习,多阅读代码。

三、数组

数组的创建与类的实例化方式相似,后面博客涉及到类的实例化相关知识点的整理

3.1 成绩查询程序

设计一个程序,存放每一年每一科的成绩,可以查询指定年份的平均成绩,所有科目加起来的平均成绩最好的年份,哪门课程哪一年的最好成绩。

这套程序用到了二维数组、switch语句、for循环、while语句、if语句等。 

import java.util.Scanner;

public class ExampleArray3 {
    public static void main(String[] args) {
        int YuwenIndex = 0;
        int ShuxueIndex = 1;
        int EnglishIndex = 2;
        int WuliIndex = 3;
        int LishiIndex = 4;
        int ShengwuIndex = 5;
        String[] names = new String[6];
        names[YuwenIndex] = "语文";
        names[ShuxueIndex] = "数学";
        names[EnglishIndex] = "英语";
        names[WuliIndex] = "物理";
        names[LishiIndex] = "历史";
        names[ShengwuIndex] = "生物";
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入共有多少年的成绩:");
        int yearToStore = scanner.nextInt();
        double[][] scores = new double[yearToStore][names.length];
        for (int i = 0; i < yearToStore; i++) {
            for (int j = 0; j < names.length; j++) {
                scores[i][j] = 80 + Math.random() * 20;
                System.out.println("第" + (i + 1) + "年" + names[j] + "成绩为:" + scores[i][j]);
            }
        }
        boolean cont = true;
        while (cont) {
            System.out.println("请输入需要进行的操作编号:");
            System.out.println("1、求某年最好成绩\n" + "2、求某年的平均成绩\n" + "3、求所有年份最好的成绩\n" + "4、求某门课历年最好的成绩");
            int year = 0;
            int oprId = scanner.nextInt();
            switch (oprId) {
                case 1:
                    System.out.println("请输入要求哪一年的平均成绩?");
                    year = scanner.nextInt() - 1;
                    if (year < 0 || year >= yearToStore) {
                        System.out.println("非法年份");
                    }
                    int bestOfYearScoreId = 0;
                    for (int i = 1; i < scores[year].length; i++) {
                        if (scores[year][bestOfYearScoreId] < scores[year][i]) {
                            bestOfYearScoreId = i;
                        }
                    }
                    System.out.println("第" + (year + 1) + "年最好成绩是" + names[bestOfYearScoreId] + ":" + scores[year][bestOfYearScoreId]);
                    break;
                case 2:
                    System.out.println("请输入要求哪一年的最好成绩");
                    year = scanner.nextInt() - 1;
                    if (year < 0 || year >= yearToStore) {
                        System.out.println("非法年份");
                    }
                    double totalScore = 0;
                    for (int i = 0; i < scores[year].length; i++) {
                        totalScore += scores[year][i];
                    }
                    System.out.println("第" + (year + 1) + "年的平均成绩是:" + (totalScore / names.length));

                    break;
                case 3:
                    int BestOfYearScoreId = 0;
                    year = 0;
                    for (int i = 0; i < scores.length; i++) {
                        for (int j = 0; j < scores[i].length; j++) {
                            if (scores[year][BestOfYearScoreId] < scores[i][j]) {
                                year = i;
                                BestOfYearScoreId = j;
                            }
                        }
                    }
                    System.out.println("历年最好成绩是第" + (year + 1) + "年的" + names[BestOfYearScoreId] + "成绩:" + scores[year][BestOfYearScoreId]);
                    break;
                case 4:
                    System.out.println("请问要查询哪门课的最好成绩?");
                    int scoreId = scanner.nextInt() - 1;
                    year = 0;
                    for (int i = 0; i < scores.length; i++) {
                        if (scores[year][scoreId] < scores[i][scoreId]) {
                            year = i;
                        }
                    }
                    System.out.println(names[scoreId] + "历年最好成绩为" + (year + 1) + "年,成绩为" + scores[year][scoreId]);
                    break;
                default:
                    System.out.println("程序结束");
                    cont = false;
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MRJJ_9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值