Java练习记录
条件判断
1)if…else if…else 语句
if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。使用 if,else if,else 语句的时候,需要注意下面几点:
- if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
- if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
- 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
语法:
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
例题:
某用户出差,根据出差星期发放津贴(如果不满一周算一周),每周的津贴是500元,求该用户出差一次的津贴,出差天数由键盘输入。
代码:
import java.util.Scanner;
public class exercise_1{
public static void main(String[] args) {
int salary=500; //每周的津贴是500元
Scanner TripTime=new Scanner(System.in); //通过 Scanner 类来获取键盘输入的出差天数
System.out.println("请输入您的出差天数:");
int a=TripTime.nextInt(); // a接收键盘获取的出差天数
if(a%7==0){ // 判断两种出差情况
System.out.println("您的津贴为:"+salary*(a/7));
// 出差天数与7取余若为0,则出差津贴=津贴*(a/7)
}
else if(a%7!=0){
System.out.println("您的津贴为:"+salary*((a/7)+1));
// 出差天数与7取余若不为0,则出差津贴=津贴*(a/7)+1
}
}
}
循环控制
1)while 循环
语法:
while是最基本的循环,它的结构为:
while( 布尔表达式 ) {
//循环内容
}
只要布尔表达式为 true,循环就会一直执行下去。
例题:
求1、3、5、…、19之积。
代码:
public class exercise_2{
public static void main(String[] args) {
int X=1; //从1开始求奇数
int product=1; //不能为0
while(X<=19 && X>0){ //使用whil循环求1~19的奇数
product=product*X; //求乘积
X=X+2; //求奇数
}
System.out.println("1*3*5*...*19之积为:"+sum);
}
2)do…while 循环、break 关键字、if…else语句综合
- do…while 循环
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
语法:
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
do {
//代码语句
}while(布尔表达式);
注意:布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。
- break 关键字
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。
语法:
break 的用法很简单,就是循环结构中的一条语句:
break;
- if…else语句
if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。
语法:
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
例题:
用户登录验证。验证次数最多3次
代码:
import java.util.Scanner;
public class log_in {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = 3;
do {
System.out.print("请输入用户名:");
String username = input.next();
System.out.print("请输入密码:");
String password = input.next();
if(username.equals("Jim") &&
password.equals("123456")) {
System.out.println("欢迎登录MyShopping系统!");
break;
}else {
System.out.println("输入错误!您还有"+(--n)+"次机会!\n");
}
}while(n>0);
if(n==0) {
System.out.println("对不起!您3次均输入错误!");
}
}
}
3)for循环嵌套if语句
虽然所有循环结构都可以用 while 或者 do…while表示,但 Java 提供了另一种语句 —— for 循环,使一些循环结构变得更加简单。for循环执行的次数是在执行前就确定的。
语法:
for(初始化; 布尔表达式; 更新) {
//代码语句
}
关于 for 循环有以下几点说明:
- 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
- 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
- 执行一次循环后,更新循环控制变量。
- 再次检测布尔表达式。循环执行上面的过程。
例题:
鸡兔同笼是我国古代著名的趣题之一。大约在1500年前,《孙子算经》中记载了这样一道题:今有雉兔同笼,上有35个头,下有94足,问鸡兔各几只?试编写程序解决这个问题。
代码:
public class JiTu{
public static void main(String[] args) {
int foot = 94;
int sum = 35;
for (int chicken = 1; chicken <= foot / 2; chicken++) {
int rabbit = sum - chicken;
if(rabbit * 4 + chicken * 2 == foot){
System.out.println("兔子的只数为:" + rabbit);
System.out.println("鸡的只数为:" + chicken);
}
}
}
}
数组
1)声明数组变量
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储固定大小的同类型元素。
首先必须声明数组变量,才能在程序中使用数组。
语法:
dataType[] arrayRefVar; // 首选的方法
dataType arrayRefVar[]; // 效果相同,但不是首选方法
注意: 建议使用 dataType[] arrayRefVar
的声明风格声明数组变量。 dataType arrayRefVar[]
风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。
2)创建数组
Java语言使用new操作符来创建数组,语法如下:
语法:
arrayRefVar = new dataType[arraySize];
上面的语法语句做了两件事:
- 使用 dataType[arraySize] 创建了一个数组。
- 把新创建的数组的引用赋值给变量 arrayRefVar。
数组变量的声明,和创建数组可以用一条语句完成,如下所示:
dataType[] arrayRefVar = new dataType[arraySize]; //方法一
dataType[] arrayRefVar = {value0, value1, ..., valuek}; //方法二
3)例题
有两个数组:数组a:{7,12,4,9,6,3,9},数组b:{2,6,3,54,2,56,21,33},将两个数组合并为数组c,排序打印输出
代码:
import java.util.Arrays;
public class exercise_1{
public static void main(String[] args) {
int[] a = {7, 12, 4, 9, 6, 3, 9}; //定义数组a
int[] b = {2, 6, 3, 54, 2, 56, 21, 33}; //定义数组b
int[] c = new int[a.length + b.length];
for (int i = 0; i < a.length; i++) {
c[i] = a[i];
}
int n = 0;
for (int i = a.length; i < c.length; i++) {
c[i] = b[n];
n++;
}
System.out.print("数组c为:");
Arrays.sort(c);
for (int i = 0; i < c.length; i++) {
System.out.print(c[i]+",");
}
}
}
字符串
1)例题
有一个字符串 “itis cloudy tomorrow”
1)统计字符串中字母o出现的个数。
2)将字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的英文单词,并打印输出。
代码:
import java.util.Scanner;
public class exercise2 {
public static void main(String[] args) {
// 有一个字符串 “itis cloudy tomorrow”
String string = "itis cloudy tomorrow";
System.out.println("输入你要查询的字母:");
Scanner scanner = new Scanner(System.in);
String word = scanner.next();
scanner.close();
System.out.println("1)该字母出现的个数为:");
System.out.println(check(string, word));
System.out.println("2)打印输出");
{
String sentence = new String("it is cloudy tomorrow");
liu(sentence);
}
}
public static int check(String str, String word) {
// 1)统计字符串中字母o出现的个数。
return str.length() - str.replace(word, "").length();
}
private static void liu(String sentence) {
// 2)将字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的英文单词,并打印输出。
String str = "it is cloudy tomorrow";
String[] arr = str.split(" +");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
类和对象
1)例题
创建一个Teacher类,要求描述姓名、性别、年龄、薪水,定义一个方法,用于在教师原有薪水的基础上增5000,再定义一个TeacherTest类,创建一个Teacher对象并初始化对象的各属性值,调用教师增加薪水的方法,并将增加薪水后的教师信息输出。
代码:
//创建一个Teacher对象并初始化对象的各属性值,调用教师增加薪水的方法,并将增加薪水后的教师信息输出。
public class TeacherTest {
public static void main(String[] args) {
// 初始化对象的各属性值
Teacher teacher=new Teacher();
Teacher.name="张三";
Teacher.age=26;
Teacher.salary=5500;
String gender="男";
System.out.println("姓名:"+teacher.name);
System.out.println("性别:"+gender);
System.out.println("年龄:"+teacher.age);
// 用教师增加薪水的方法,并将增加薪水后的教师信息输出
System.out.println("增加后的薪水:"+teacher.getSalary(teacher.salary));
}
}
public class Teacher {
// 创建一个Teacher类,要求描述姓名、性别、年龄、薪水
static String name;
String gender;
static int age;
static double salary;
public double getSalary(double salary) {
// 定义一个方法,用于在教师原有薪水的基础上增5000
return salary + 5000;
}
}
注:
本篇内容语法解释部分引自菜鸟教程-Java教程