-
逻辑控制:顺序、选择、循环
-
if(布尔表达式){
} //if后面必须是布尔表达式
如果布尔表达式结果为true,执行if中的语句,否则不执行。 -
switch case语句,不要省略break
不能做switch的参数的数据类型是:long,float,double,boolean,4类不可以
switch的括号内只能是以下类型的表达式:
基本数据类型:byte、short、int、char,注意不能是long
引用数据类型:String常量串、枚举类型 -
调试
①打断点
②debug(虫子图案)
蓝色引用代表即将执行这一行,实际上当前还未执行
上图3个分别代表:第一个会把函数直接跳过,第二个会进入函数进行调试,第三个会跳到源码
第一个是重新启动调试,第三个会跳到下一个断点,第五个是暂停调试 -
循环写成死循环的方法
注意写while(1),会报错,因为while后面得跟布尔表达式,则写成while(true){}
public static void main(String[] args) {
//while循环写成死循环
while (true){
}
//for循环写成死循环
for (int i = 0; ; i++) {
}
for (; ; ) {
}
}
- do while,是先执行再判断
- Java中得输入和输出
在实际的开发中基本不会用到在控制台输入、输出
Java的输出有3种形式,如代码所示
public static void main(String[] args) {
//Java输出的3种形式
System.out.println("换行输出");
System.out.print("不换行输出");
int a = 10;
System.out.printf("格式化输出%d",a);
}
- Java从键盘读取输入——Scanner
使用Scanner读取字符串/整数/浮点数,Scanner相当于一个工具类
import java.util.Scanner;
//需要导入util包
public static void main(String[] args) {
//学会Java的输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入年龄");
int age = sc.nextInt();
sc.nextLine();
System.out.println("请输入姓名");
String s = sc.nextLine();
System.out.println("请输入工资");
float d = sc.nextFloat();
System.out.println("姓名" + s + "年龄" + age + "工资" + d);
}
在代码种有个单独的 sc.nextLine();语句,目的是为了读取回车。
- next和nextLine的区别是next遇见空格就结束了
- 循环读取N个数字的方法
while(sc.hasNextInt){ } //有没有下一个整数
当循环输入多个数据的时候,Idea种使用ctrl+d来结束输入
例如循环读取多个数组,并求其平均值
public static void main(String[] args) {
//循环读取多个数组,并求其平均值
Scanner sc = new Scanner(System.in);
int sum = 0;
int count = 0;
while (sc.hasNextInt()){
sum += sc.nextInt();
count++;
}
float ave = 0F;
ave = sum / count;
System.out.println(ave);
}
运行结果:
- 打印 1 - 100 之间所有的素数
public static void main(String[] args) {
//题:打印 1 - 100 之间所有的素数
int i = 2;
boolean flag = true;
int count = 0;
while(i <= 100) {
flag = true;
for (int j = 2; j <= i / 2; j++) {
if(i % j == 0) {
flag = false;
break;
}
}
if (flag) {
count++;
System.out.println(i);
}
i++;
}
System.out.println("1到100的素数总个数为" + count);
}
运行结果:
- 编写程序数一下1到 100 的所有整数中出现多少个数字9
public static void main(String[] args) {
//编写程序数一下1到 100 的所有整数中出现多少个数字9
int i = 1;
int g = 0;
int s = 0;
int count = 0;
while (i <= 100) {
g = 0;
s = 0;
g = i % 10;
s = i / 10 % 10;
if(g == 9){
count++;
}
if(s == 9){
count++;
}
i++;
}
System.out.println(count);
}
运行结果:
13. 输出 1000 - 2000 之间所有的闰年
分析:闰年有2种,普通闰年和世纪闰年
普通闰年:能被4整除,但不能被100整除
世纪闰年:能被400整除
public static void main(String[] args) {
//输出 1000 - 2000 之间所有的闰年
for (int i = 1000; i <= 2000; i++) {
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0){
System.out.println(i);
}
}
}
运行结果截图(部分):
- 给定一个数字,判定一个数字是否是素数
public static void main(String[] args) {
//给定一个数字,判定一个数字是否是素数
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
boolean flag = true;
for (int i = 2; i <= n / 2; i++) {
if(n % i == 0) {
flag = false;
break;
}
}
if (flag) {
System.out.println(n + "是素数");
}else {
System.out.println(n + "不是素数");
}
}
运行结果:
- 求一个整数,在内存当中存储时,二进制1的个数。
分析:把十进制转成二进制,除2取余法
public static void main(String[] args) {
//求一个整数,在内存当中存储时,二进制1的个数。
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int y = 0;
int count = 0;
while (n != 0){
y = n % 2;
n = n / 2;
if(y == 1) {
count++;
}
}
System.out.println(count);
}
运行结果:10的二进制是 1010,2个1,故理想输出结果是2
- 求2个整数的最大公约数
public static void main(String[] args) {
//求2个整数的最大公约数
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
int x = m < n? m : n;
//System.out.println(x);
for (int i = x; i > 0; i--) {
if (m % i == 0 && n % i == 0){
x = i;
break;
}
}
System.out.println("最大公约数是" + x);
}