1.输入输出
在前面的代码中,我们总是使用System.out.println()
来向屏幕输出一些内容。println是print line的缩写,表示输出并换行。因此,如果输出后不想换行,可以用System.out.print()
格式化输出:
如果要把数据显示成我们期望的格式,就需要使用格式化输出的功能。格式化输出使用System.out.printf()
,通过使用占位符%?
,printf()可以把后面的参数格式化成指定格式:
public class Main{
public static void main(String[] args){
double d = 3.1415927;
System.out.printf("%.2f",d);
System.out.printf("%.4f",d);
}
}
占位符 | 说明 |
%d | 格式化输出整数 |
%x | 格式化输出十六进制整数 |
%f | 格式化输出浮点数 |
%e | 格式化输出科学计数法表示的浮点数 |
%s | 格式化字符串 |
输入: 直接看案例
输入类型:
方法 描述
nextBoolean() 从用户输入中读取1个 boolean 值
nextByte() 从用户输入中读取1个 byte 值
nextDouble() 从用户输入中读取1个 double 值
nextFloat() 从用户输入中读取1个 float 值
nextInt() 从用户输入中读取1个 int 值
nextLine() 从用户输入中读取1个 String 值
nextLong() 从用户输入中读取1个 long 值
nextShort() 从用户输入中读取1个 short 值
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象
System.out.print("Input your name: "); // 打印提示
String name = scanner.nextLine(); // 读取一行输入并获取字符串
System.out.print("Input your age: "); // 打印提示
int age = scanner.nextInt(); // 读取一行输入并获取整数
System.out.printf("Hi, %s, you are %d\n", name, age); // 格式化输出
}
}
首先,我们通过import语句导入java.util.Scanner,import是导入某个类的语句,必须放到Java源代码的开头
然后,创建Scanner对象并传入System.in。System.out代表标准输出流,而System.in代表标准输入流。直接使用System.in读取用户输入虽然是可以的,但需要更复杂的代码,而通过Scanner就可以简化后续的代码。
有了Scanner对象后,要读取用户输入的字符串,使用scanner.nextLine()
;要读取用户输入的整数,使用scanner.nextInt()
。Scanner会自动转换数据类型,因此不必手动转换。
2.if判断
if语句的基本语法是:
if (条件) {
// 条件一满足时执行
}
else if(条件) {
// 条件二满足时执行
}
else{
// 条件不满足时执行
}
拓:浮点数相等判断。浮点数在计算机中常常无法精确表示,并且计算可能出现误差,因此,判断浮点数相等用==判断不靠谱
public class Main {
public static void main(String[] args) {
double x = 1 - 9.0 / 10;
// 利用Math的绝对值之差
if (Math.abs(x - 0.1) < 0.00001) {
System.out.println("x is 0.1");
} else {
System.out.println("x is NOT 0.1");
}
}
}
3.switch语句
switch (option) {
case 3:
...
break;
case 2:
...
break;
case 1:
...
break;
default:
...
break;
}
4.while循环
while循环
在每次循环开始前,首先判断条件是否成立。如果计算结果为true,就把循环体内的语句执行一遍,如果计算结果为false,那就直接跳到while循环的末尾,继续往下执行。
public class Main {
public static void main(String[] args) {
int sum = 0; // 累加的和,初始化为0
int n = 1;
while (n <= 100) { // 循环条件是n <= 100
sum = sum + n; // 把n累加到sum中
n ++; // n自身加1
}
System.out.println(sum); // 5050
}
}
while循环是先判断循环条件,再循环,因此,有可能一次循环都不做。
5.do…while循环
在Java中,while循环是先判断循环条件,再执行循环。而另一种do while循环则是先执行循环,再判断条件,条件满足时继续循环,条件不满足时退出。它的用法是:
do {
执行循环语句
} while (条件表达式);
可见,do while循环会至少循环一次。
6.for循环
public class Main {
public static void main(String[] args) {
int[] ns = { 1, 4, 9, 16, 25 };
int sum = 0;
for (int i=0; i<ns.length; i++) {
System.out.println("i = " + i + ", ns[i] = " + ns[i]);
sum = sum + ns[i];
}
System.out.println("sum = " + sum);
}
}
/*
i = 0, ns[i] = 1
i = 1, ns[i] = 4
i = 2, ns[i] = 9
i = 3, ns[i] = 16
i = 4, ns[i] = 25
sum = 55
*/
for each循环
本质上为增强for循环:用来遍历集合与数组
格式:
for(集合/数组的数据类型 变量名:集合名/数组名){
执行语句
}
7.break与continue
break:会跳出整个循环,也就是整个循环都不会执行了
continue:提前结束本次循环,直接继续执行下次循环
8.二维数组
public class Main {
public static void main(String[] args) {
int[][] ns = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 }
};
System.out.println(ns.length); // 3
}
}
因为ns包含3个数组,因此,ns.length为3
.
访问二维数组的某个元素需要使用array[row][col],例如:
System.out.println(ns[1][2]); // 7