目录
逻辑控制
1.顺序结构
2.分支结构
2.1 if 结构
2.1.1 代码
if(布尔表达式){
//条件满足时执行代码
}
if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}
if(布尔表达式){
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}
调试代码【调试是一个程序员最基本的能力】
通过调试解决问题,步骤如下:
①打断点 鼠标左键
为什么打断点??就是让程序运行到断点处停下来!!本质上程序还在运行
②鼠标右键 Debug
③
2.1.2 应用
判断年份是否是闰年
public class F {
public static void main(String[] args) {
for (int year = 1000; year <= 2000; year++) {
if (year % 100 == 0) {
if (year % 400 == 0) {
System.out.println(year + "is 闰年");
}
} else {
if (year % 4 == 0) {
System.out.println(year + "is 闰年");
}
}
}
}
}
注意:
代码风格问题
// 建议风格
int x = 10;
if (x == 10) {
// 满足条件
} else {
// 不满足条件
}
悬垂 else 问题
public class F {
public static void main(String[] args) {
int x = 10;
int y = 10;
if (x == 10)
if (y == 10)
System.out.println("aaa");
else
System.out.println("bbb");
//else会跟最近的一个if匹配
}
}
2.2 switch 语句:
不能做Switch参数的数据类型有哪些?基本数据类型当中:float double long
switch中的值可以是: 整数 | 枚举 | 字符 | 字符串 public class F {
public static void main(String[] args) {
int a = 1;
switch(a){
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
break;
default:
break;
}
}
}
3. 循环结构
3.1 while 循环
while(布尔表达式){
循环体
}
应用
//1! + 2! +3! + 4! +5! +6!
public class F {
public static void main(String[] args) {
int k = 1;
int sum = 0;
while (k <= 5){
int n = 1;
int ret = 1;
while(n <= k){
ret = ret * n;
n ++;
}
k++;
sum = sum +ret;
}
System.out.println(sum);
}
}
每个循环都是一个独立的个体
3.2 break
break 的功能是让循环提前结束!!!剩下多少趟都不会执行//找到 100 - 200 中第一个 3 的倍数
public class F {
public static void main(String[] args) {
int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println(num);
break;
}
num++;
}
}
}
3.3 continue
continue 的功能是跳过这次循环 , 立即进入下次循环//求100--200之间 既能被3整除,也能被4整除的数字 要求使用continue
public class F {
public static void main(String[] args) {
int i =100;
while(i <= 200){
if (i %3 != 0 || i %4 != 0){
i++;
continue;
}
System.out.println(i);
i++;
}
}
}
既能被3整除,又能被4整除 的反面 是 i %3 != 0 || i %4 != 0 !!!不是&&
等价于 i % 12 != 0
3.4 for循环
for( 表达式 1;布尔 表达式 2; 表达式 3){ 表达式4; }应用
//1!+2!+3!+4!+5!
public class F {
public static void main(String[] args) {
int sum = 0;
for (int j = 1; j <= 5; j++) {
int ret = 1;
for (int i = 1; i <= j; i++) {
ret *= i;
}
sum += ret;
}
System.out.println(sum);
}
}
//一定要注意加上变量前的类型!!!
3.5 do...while循环
do{
循环语句;
}while(循环条件);
4. 输入输出
import java.sql.SQLOutput;
import java.util.Scanner;//包 输入Scan,回车就出现了
public class F {
public static void main(String[] args) {
//Java中的三种输出
System.out.println("输出且换行!");
System.out.print("不换行");
System.out.printf("%d\n",10);
//导入这个包【include】
Scanner scan = new Scanner(System.in);//scan是变量
System.out.println("请输入你的姓名");
String name = scan.nextLine();//nextLine 读入一行 next是遇到空格结束!!!
System.out.println("姓名:"+name);
System.out.println("输入一个年龄");
int age = scan.nextInt();//读入一个int类型的整数
System.out.println("年龄:"+age);
System.out.println("请输入你的工资:");
float salary = scan.nextFloat();
System.out.println("工资:"+ salary);
scan.close();//可以认为scan是一个资源
}
}
当将年龄那段代码放在字符串(姓名)的前面时,出现了这样的输出结果
import java.sql.SQLOutput;
import java.util.Scanner;
public class F {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("输入一个年龄");
int age = scan.nextInt();
System.out.println("年龄:"+age);
System.out.println("请输入你的姓名");
String name = scan.nextLine();
System.out.println("姓名:"+name);
System.out.println("请输入你的工资:");
float salary = scan.nextFloat();
System.out.println("工资:"+ salary);
scan.close();
}
}
原因是 nextLine 读数据的时候会把上一个的回车读进去
为了消除回车的影响,可以在姓名代码的前面加上
scan.nextFloat();//注意回车
5. 应用
5.1 使用 Scanner 循环读取 N 个数字
import java.sql.SQLOutput;
import java.util.Scanner;
public class F {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNextInt()){
int age = scan.nextInt();
System.out.println(age);
}
}
}
当循环输入多个数据的时候 , 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d). 注:IDEA上使用ctrl + d控制台的输入输出主要是验证结果!!!
5.2 猜数字游戏
import java.util.Random;
import java.util.Scanner;
public class F {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();//输入Ran然后回车
int randNum = random.nextInt(100);//[0,100)
//50-100的随机数 random.nextInt(50)--[0,50) +50
while (true){
System.out.println("请输入你要猜的数字:");
int num = scanner.nextInt();
if(num < randNum){
System.out.println("猜小了");
}else if(num == randNum){
System.out.println("猜对了");
break;
}else{
System.out.println("猜大了");
}
}
}
}
5.3 判断一个数字是否是素数
打印 1 - 100 之间所有的素数
public class F {
public static void main(String[] args) {
for(int n =1;n<=100;n++){
int i = 2;
for(;i<=Math.sqrt(n);i++){
if(n % i == 0) {
break;
}
}
//有几种情况 ? 2--》 1.不符合循环条件 (是素数)2.遇到了break (不是素数)
if(i > Math.sqrt(n)){
System.out.println(n+"是素数!");
}
}
}
}
//1单独判断
5.4 水仙花数
求 0 -- 999999之间的
public class F {
public static void main(String[] args) {
for(int i = 1;i <= 999999;i++){
//i = 123
int count = 0;//记录位数
int tmp = i;
while(tmp != 0){
tmp /= 10;
count++;
}
tmp = i;//123
int sum = 0;
while (tmp != 0){
sum += Math.pow(tmp % 10,count);//sum = sum + ...会报错 因为...返回的是double类型
tmp /= 10;
}
if(sum == i){
System.out.println(i);
}
}
}
}
5.5 写一个函数返回参数二进制中 1 的个数
public class F {
public static void main(String[] args) {
//求二进制1的个数
int n = -1;
int count = 0;
while(n != 0) {
n = n & (n - 1);
count++;
}
System.out.println(count);
}
}
标签:scan,int,System,初识,println,JavaSE,public,out
From: https://blog.csdn.net/2301_80174936/article/details/142109930