学习笔记来源于B站博主:遇到狂神说
用户交互Scanner
-
为了实现人和程序进行交互,java提供了一个工具类Scanner,我们可以获取用户的输入。java.util.Sacnner是Java5的新特性。
-
基本语法
Scanner s=new Scanner(System.in);
-
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般采用hasNext()与hasNextLine()判断是否还有输入的数据。
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串:");
// String str=scanner.next(); //输入的字符串若有空格,则舍弃空格之后的字符
String str2=scanner.nextLine(); //允许输入的字符串有空格
// System.out.println(str);
System.out.println(str2);//这里之所以不需要判断是不是字符串是因为输入的所有的都默认是字符串
System.out.println("请输入整数:");
if(scanner.hasNextInt()){
// String str=scanner.next();
int str3=scanner.nextInt();
// System.out.println(str);
System.out.println(str3);}
else{
System.out.println("你输入的不是整数");
}
System.out.println("请输入浮点数:");
if(scanner.hasNextFloat()){
// String str=scanner.next();
float str4=scanner.nextFloat();
// System.out.println(str);
System.out.println(str4);}
else{
System.out.println("你输入的不是小数");
}
//其他数据类型判断和以上相同
scanner.close();//java中所有的IO流都应该需要用完后关闭,释放内存空间
}
}
-
Scanner类提供了各种数据类型的输入,唯独单个字符没有,需要转换
import java.util.Scanner; public class Demo04 { public static void main(String[] args) { String name="秦疆"; System.out.println(name.hashCode()); //任何对象都有取固定的哈希值 Scanner scanner = new Scanner(System.in); char grade=scanner.next().charAt(0);//Sacnner类没有直接提供输入端单个字符的方法,所以需要通过字符串的方法然后取索引为0的字符 switch(grade){ case 'A': System.out.println("优秀"); break; case 'B': System.out.println("良好"); break; case 'C': System.out.println("挂科"); break; } } }
顺序结构
- 程序自上而下执行
- 它是任何一个算法都离不开的一种基本算法结构
选择结构
-
if单选则结构
-
if双选择结构
-
if多选择结构
-
Switch多选择结构
import java.util.Scanner; public class Demo03 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入成绩:"); int score = scanner.nextInt(); if (score>=80&&score<=100) { System.out.println("优秀"); } else if (score >= 60 && score < 80) { System.out.println("良好"); } else if (score < 60) { System.out.println("不及格"); } else { System.out.println("输入的成绩不正确"); } scanner.close(); } }
循环结构-
-
while循环
-
do while循环
public class Demo05 { public static void main(String[] args) { int i=1; int sum=0; while (i<=100){ sum+=i; i++; } do{ //循环至少执行一次 sum+=i; i++; }while (i<=100); System.out.println("while循环结束!"+sum); while (true){ //死循环 //等待客户端连接 //定时检查 System.out.println(1); } } }
-
for循环
public class Demo06 {
public static void main(String[] args) {;
int sum=0;
int oddsum=0;
int evensum=0;
//for(初始化;条件判断;迭代)
//for循环语句支持迭代的一种通用结构,是最有效,最灵活的循环结构
// for(;;){}=while(true){} ,两者都表示死循环
//快捷键:输入100.for回车即可自动生成该for循环
for(int i=1;i<100;i++){
sum=sum+i;
}
System.out.println("0到100的和:"+sum);
for (int i = 0; i < 100; i++) {
if(i%2!=0){
evensum+=i;
}else{
oddsum+=i;
}
}
System.out.println("0到100的奇数和:"+evensum+"\n"+"0到100的偶数和:"+oddsum);
//输出0到1000之间的能被5整数的数,每三行输出一个
for (int i = 0; i < 1000; i++) {
if(i%5==0){
System.out.print(i+"\t");
}
if(i%(5*3)==0){
System.out.print("\n"); //println输出完全换行,print输出完全不换行
// System.out.println();
}
}
//打印九九乘法表
for (int j =1; j <=9; j++) {
for (int i = 1; i <= j; i++) {
System.out.print(i + "*" + j+ "=" + i*j+"\t");
}
System.out.println();//换行
}
}
}
public class Demo07 {
public static void main(String[] args) {
int[]number={10,20,30,40,50};
//遍历数组的元素
for (int i=0;i<5;i++){
System.out.println(number[i]);
}
System.out.println("==============================");
for(int x:number){//把数组中的所有元素赋值给x然后输出,是for循环的简化版,偷懒用的,主要是用来遍历数组和集合
System.out.println(x);
}
}
}
break&continue
//break和continue区别
public class Demo08 {
public static void main(String[] args) {
int i=0;
while (i<100){
i++;
if(i%5==0){
break; //break在任何循环语句的主体部分,均可用break控制循环过程
//break用于强行退出循环,不执行某个循环主体剩余的语句
}
System.out.println(i);
}
System.out.println("==============================");
while (i<100){
i++;
if(i%5==0){
System.out.println();
continue; //continue语句用于跳过循环体的某次循环,但是不会退出循环,而循环体继续循环
}
System.out.println(i);
//比如想输出0到100不包括5结尾的数字,这时候就得使用continue了
}
System.out.println("==============================");
//goto是java保留的关键字,但是很少使用,目的是当有很多for嵌套循环时,想指定跳到某个for循环
outer: for (int j = 0; j < 100; j++) {
for (int a = 0; a < j / 2; a++) { //快捷键:shift+f6批量更改变量
if(a%j==0){
continue outer;
}
}
}
}
}
练习(打印三角形)
public class Demo09 {
public static void main(String[] args) {
//打印5行三角形
for (int i = 1; i <=5; i++) {
for (int j=5; i<=j; j--) {
System.out.print(" ");
}
for (int j =1; i>=j; j++) {
System.out.print("*");
}
for (int j =1;j<i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}