JavaSE01
博主学习视频:b站狂神说Java
用户交互Scanner
java通过Scanner类来获取用户的输入
Scanner s = new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前需要使用hasNext()与hasNextLine()来判断是否还有输入的数据。
- next():一定要读取到有效字符才可以结束输入,同时不会读取空格
- nextLine():得到输入回车(Enter)之前的所有字符,可以获得空格
Scanner scanner = new Scanner(System.in);//从键盘接受数据
System.out.println("使用next方式接收:");
if ((scanner.hasNext()))//判断是否还有输入,*可以去除*
{
String str = scanner.next();//输入hello world
System.out.println("输出为:"+str);//输出hello
//String str = scanner.nextLine();//输入hello world
//System.out.println("输入为:"+str);//输出hello world
}
scanner.close();//IO流的类,与c的指针类似,及时关闭有助于节省资源
//输入多个数字,计算总和与平均数,通过非数字终止输入
public class Demo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = 0;
double sum = 0;
System.out.println("请输入数字,输入非数字则停止输入:");
while (scanner.hasNextDouble()){
double d = scanner.nextDouble();
sum+=d;
i++;
}
System.out.println("和:"+sum+"\n均值:"+(sum/i));
scanner.close();
}
}
顺序结构
从上到下的执行顺序
选择结构
if单选择结构
if(布尔表达式){
执行语句 //当布尔表达式的结果为true
}
public class Demo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
String str = scanner.nextLine();
//equals用于比较字符串是否一致
if(str.equals("hello world")||str.equals("布达鸟")){
System.out.println("你怎么睡得着的!我感觉匪夷所思鸭!");
}
scanner.close();
}
}
if双选择结构
if(布尔表达式){
执行语句1 //当布尔表达式的结果为true
}else{
执行语句2 //当布尔表达式的结果为false
}
if多选择结构
if(布尔表达式1){
执行语句1 //当布尔表达式1的结果为true
}else if(布尔表达式2){
执行语句2 //当布尔表达式2的结果为true
}else{
执行语句3 //当布尔表达式的结果为false
}
嵌套的if结构
if(布尔表达式1){
if(布尔表达式2){ //当布尔表达式1的结果为true
执行语句 //当布尔表达式2的结果为true
}
}
switch多选择结构
switch(表达式){
case value: //表达式值与value相等
执行语句
break; //省略不会跳出
case value: //表达式值与value相等
执行语句
break; //省略不会跳出
default:
执行语句
}
public class Demo {
public static void main(String[] args) {
char c = 'c';
switch (c){
case 'a':
System.out.println("优秀");
break;
case 'b':
System.out.println("良好");
break;
case 'c':
System.out.println("及格");
break;
default:
System.out.println("不及格");
}
}
}
switch支持字符串键值(case),主要是通过哈希值来判断。
循环结构
while循环
while(布尔表达式){
执行内容 //布尔表达式为true可以一直执行
} //当布尔表达式的值一直为true时会陷入死循环
public class Demo04 {
public static void main(String[] args) {
int i = 1;
int sum=0;
while (i<=100){
sum+=i;
i++;
}
System.out.println(sum);
}
}
do -while循环
do{ //第一次执行不需要判断
执行内容 //布尔表达式为true可以一直执行
}while(布尔表达式)
do-while循环至少执行一次
for循环
for(初始化;布尔表达式;更新){
执行语句
}
for循环是支持迭代的一种通用结构,是最有效、最灵活的循环结构。
for循环的执行次数是确定的
增强for循环
for(声明语句;表达式){
执行语句
}
增强for循环主要用于数组或集合
public class Demo {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50}; //定义了一个数组
for (int i = 0; i < 5; i++) {
System.out.println(numbers[i]);
}
System.out.println("==================");
for (int x : numbers) { //for循环遍历数组的元素
System.out.println(x); //10 20 30 40 50
}
}
}
99乘法表
public class Demo {
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
for (int j = 1 ; j <= i; j++){
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
System.out.println();
}
}
}
break & continue
- break用于强行终止循环,不执行循环中剩余的语句
- continue用于终止某次循环过程,跳过循环体中尚未执行的语句,接着开始进行下一次循环的判定
延展
-
Java中没有goto的用法,但goto仍然是Java的一个保留字
-
“标签”是指后面跟一个冒号的标识符,例:label:
标签可用于循环语句之前,通过break和continue中断到存在标签的地方
public class LabelDemo {
public static void main(String[] args) {
//打印101~150之间所有的质数
int count = 0;
qq:for (int i = 101; i <= 150; i++) { //循环语句开头设立标签
for (int j = 2; j < i/2; j++){
if(i % j == 0){
continue qq; //中断后会从标签的位置开始执行,而不是下一个内循环
}
}
System.out.print(i+"\t");
}
}
}
练习题:打印三角形
public class testDemo {
public static void main(String[] args) {
//打印三角形
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要打印的行数:");
int n = scanner.nextInt();
scanner.close();
System.out.println("===================");
for (int i = 1; i <= n; i++) {
for (int j = n-i; j >=0; j--){
System.out.printf(" ");
}
for (int m = 2*i-1; m > 0; m--){
System.out.printf("*");
}
System.out.println();
}
}
}