韩顺平0基础学Java——第7天

news2024/12/24 20:48:43

p110-p154

控制结构(第四章)

多分支

if-elseif-else

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		System.out.println("input your score?");
		int score = myscanner.nextInt();
		if(score==100){
			System.out.println("excellent!!");
		}
		else if (score<=99&&score > 80){
			System.out.println("GOOD~~");
		}
		else if (score<=80&&score>=60){
			System.out.println("ok");
		}
		else{
			System.out.println("not ok!!");
		}
		System.out.println("go on...your score is\t"+score);
	}
}

但是你输入110的时候也会报不及格哎!我怎么没想到...所以我们先对输入的信用分进行有效判断

如果用户输入的是hello咋整捏?好吧听说后面会讲...(异常处理)

案例:

输出b啊

嵌套分支

建议不要超过3层。

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		System.out.println("input your score?");
		double score = myscanner.nextDouble();
		System.out.println("input your gender?(man/woman)");
		String gender = myscanner.next();
		if(score>8.0){
			if (gender.equals("man")){
			System.out.println("you will go to man's final competition");
			}
			else if(gender.equals("woman")){
				System.out.println("you will go to woman's final competition");
			}
		}
		else{
			System.out.println("youe are fired!");
		}
		System.out.println("go on...your score is\t"+score);
	}
}

练习:

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		System.out.println("input your age?");
		int age = myscanner.nextInt();
		System.out.println("input the month(like 1,2,3,4...)");
		int month = myscanner.nextInt();
		if(month>=4&&month<=10){
			System.out.println("it's wangji");
			if (age<18&&age>0){
			System.out.println("you are kid,give me 30 yuan");
			}
			else if(age>=18&&age<60){
				System.out.println("you are adult, give me 60 yuan");
			}
			else if(age>=60){
				System.out.println("you are elder, give me 20 yuan");
			}
			else {
				System.out.println("your age is a problem");
			}
		}
		else if ((month<4&&month>=1)||(month>10&&month<=12)){
			System.out.println("it's danji");
			if(age>=18&&age<60){
				System.out.println("you are adult, give me 40 yuan");
			}
			else if(age>=0&&age<18||age>=60){
				System.out.println("your are not adult, give me 20 yuan");
			}
		}
		else{
			System.out.println("your month is a problem");
		}
		System.out.println("go on...");
	}
}

switch分支

学过了,敲下练习吧。

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		System.out.println("input a/b/c/d/e/f/g?");
		char c = myscanner.next().charAt(0);
		switch(c){
		case('a'):{
			System.out.println("feiju1");break;
		}
		case('b'):{
			System.out.println("2");break;
		}
		default:
			System.out.println("=====");
		}
	}
	}

细节讨论:

1.表达式的数据类型,应该和case后的常量类型一致,或者可以自动转换的(比如char和int)

2.switc(表达式)中表达式的返回值必须是byte,short,int,char,enum[],String中的类型。注意enum[]是枚举

3.case子句中必须是常量,或者常量表达式,不能有变量。

4.default是可选的,也可以没有

5.遇到break会退出程序,不遇到会继续执行下面的。

练习:

穿透怎么用啊?好家伙第一次见。

for循环

for(循环变量初始化;循环条件;循环变量迭代){

        循环操作;

}

细节

1.循环条件是返回一个布尔值的表达式

2.for(;条件;)中的初始化和变量迭代是可以写到外面的,但是里面的分号不能省。

3.循环初始值可以有多条初始化语句,但是要求类型一样,并且中间用逗号隔开,迭代也可以有多条

4.输出啥?

i=0,j=0

i=1,j=2

i=2,j=4

练习:

1.

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		int j=0,sum=0;
		for(int i=1;i<=100;i++){
			if(i%9==0){
				System.out.println(i);
				j++;
				sum+=i;
			}
		}
		System.out.println("you zhe me duo ge:"+j+"\nsum is:"+sum);
	}
	}

2.

public class day7{
	public static void main(String[] args) {
		for(int i=0,sum=5;i<6;i++,sum--){
			System.out.println(i+"+"+sum+"="+(i+sum));
			}
		}
	}
	

老师这个更妙啊:

while循环

这个之前用的也不太好..基本语法如下.细节:while先判断再执行。

循环变量初始化;

while(循环条件){

        循环体(语句);

        循环变量迭代;

}

练习:

1.

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		int i = 1;
		while(i<=100){
			if(i%3==0)
				System.out.println(i);
			i++;
		}
		}
	}
	

2.

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		int i = 40;
		while(i<=200){
			System.out.println(i);
			i+=2;
		}
		}
	}
	

吃个饭回来在搞》。。

do...while循环控制

语法:

循环变量初始化;

do{

        循环体;

        循环变量迭代;

}while(循环条件);

说明:先执行,再判断,也就是说一定会至少执行一次。

练习:

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		int i = 1;
		System.out.println("1st question");
		do{
			System.out.println(i++);
		}while(i<=100);
		System.out.println("2nd question");
		int k = 1,sum = 0;
		do{
			sum+=k++;
			System.out.println(sum);
		}while(k<=100);
		System.out.println("3th question");
		int j = 1,count = 0;
		do{
			if(j%5==0&&j%3!=0)
				count++;
			j++;
		}while(j<=200);
		System.out.println(count);
		System.out.println("4th question");
		Scanner myscn = new Scanner(System.in);
		char m;
		do{
			System.out.println("huan qian? y/n");
			m = myscn.next().charAt(0);
		}while(m!='y');
		System.out.println("good boy");
	}
}

	
	

老师:好一个先兵后礼,不管还不还钱,先打了再说是吧?

多重循环练习(重点)

1.

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		Scanner mysc = new Scanner(System.in);
		int s1=0,s2=0;
		for(int i=0;i<3;i++){
			for(int j=0;j<5;j++){
				System.out.println("input score of "+(i+1)+" class's the "+(j+1)+" student");
				s1+=mysc.nextInt();
			}
			System.out.println("the "+(i+1)+"class's average is "+((double)s1/5));
			s2+=s1;
			s1=0;
		}
		System.out.println("all classes's average is "+((double)s2/15));
	}
}

2.

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		Scanner mysc = new Scanner(System.in);
		int s1=0,s2=0;
		for(int i=0;i<3;i++){
			for(int j=0;j<5;j++){
				System.out.println("input score of "+(i+1)+" class's the "+(j+1)+" student");
				if(mysc.nextInt()>=60)
					s1++;
			}
			System.out.println("the "+(i+1)+"class's ok student is "+s1);
			s2+=s1;
			s1=0;
		}
		System.out.println("all classes's ok student is "+s2);
	}
}

3.原来System.out.print();就是不换行啊~~

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		Scanner mysc = new Scanner(System.in);
		int s1=1,s2=1;
		for(int i=1;i<=9;i++){
			for(int j=1;j<=i;j++){
				System.out.print(j+"*"+i+"="+i*j+"\t");
			}
		}
		System.out.println("over");
	}
}

练习:空心金字塔

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		Scanner mysc = new Scanner(System.in);
		System.out.println("input the layer?");
		//x=layer
		int x=mysc.nextInt();
		for(int i=1;i<=x;i++){
			for(int j=0;j<x-i;j++)
				System.out.print(" ");
			for(int j=1;j<=2*i-1;j++){
				if(j==1||j==2*i-1||i==x)
					System.out.print("*");
				else
					System.out.print(" ");
			}
			System.out.print("\n");
		}
	}
}

真累人...讲解有点意思0136_韩顺平Java_空心金字塔_哔哩哔哩_bilibili

尝试打印空心菱形:(成功了,虽然折腾了半天因为少写个等号,然后丢给ai立马跑出来,救命,我真的学得会吗?)

跳转控制语句break

当break语句出现在多层嵌套的语句中时,可以使用标签指明要终止的是哪一层语句块。

例题:

抽卡无保底现状:

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
		int x = 0,sun = 0;
        do{
            x=(int)(Math.random()*100)+1;
            if(x==97)
                {System.out.println("x is " + x + "! get it need " + sun + " times~");
                System.out.println("=============");
                break;}
            else
                System.out.println("x is "+x+" already "+ sun +" times");
            sun++;
        }while(true);

	}
}

练习:

第一题:

结果是6

第二题:

字符串的比较推荐使用:

可以避免空指针。

continue

用于结束本次循环,继续执行下一次循环。和break一样,可以制定label,例:

01010101

如果continue label2的话是013456789循环4次

return

表示跳出所在的方法,在讲解方法的时候,会详细的介绍,如果return写在main里,会退出程序

本例中,return在主方法(main)中,所以退出程序了,只会输出

hello

hello

韩顺平

本章作业

第一题

贴心的询问了你有多少钱,好收保护费。

import java.util.Scanner;
public class day7{
	public static void main(String[] args) {
        Scanner mysc = new Scanner(System.in);
		System.out.println("input your money");
        double money = mysc.nextDouble();
        int count = 0;
        while(true){
            if(money>50000){
                money*=0.95;
                count++;
            }
            else if(money>=1000&&money<=50000){
                money-=1000;
                count++;
            }
            else{
                break;
            }
        }
        System.out.println(count);
	}
}

第二题

import java.util.Scanner;

public class day7 {
    public static void main(String[] args) {
        Scanner mysc = new Scanner(System.in);
        System.out.println("input your integer~");
        int x = mysc.nextInt();
        if (x > 0) {
            System.out.println("zhengshu");
        } else if (x < 0) {
            System.out.println("fushu");
        } else {
            System.out.println("0");
        }
        mysc.close(); 
    }
}

第三题

  1. 如果年份能被4整除且不能被100整除,那么它是闰年。
  2. 如果年份能被400整除,那么它也是闰年。
import java.util.Scanner;

public class day7 {
    public static void main(String[] args) {
        Scanner mysc = new Scanner(System.in);
        System.out.println("input your year~");
        int x = mysc.nextInt();
        if ((x % 4==0&&x % 100 != 0)||(x%400==0)) {
            System.out.println("run nian");
        }  else {
            System.out.println("no run nian");
        }
        mysc.close(); 
    }
}

第四题

import java.util.Scanner;

public class day7 {
    public static void main(String[] args) {
        Scanner mysc = new Scanner(System.in);
        System.out.println("input your integer(abc)~");
        int x = mysc.nextInt();
        int a=0,b=0,c=0;
        a=x/100;
        b=(x-100*a)/10;
        c=(x-100*a-10*b);
        if(x==a*a*a+b*b*b+c*c*c){
            System.out.println("yes!");
        }
        else{
            System.out.println("no");
        }
        mysc.close(); 
    }
}

还有这种写法:

学到惹

第五题

啥都不输出啊

第六题

public class day7 {
    public static void main(String[] args) {
        for(int i=1;i<=100;i++){
            int count = 0;
            while(count<5){
                if(i%5!=0)
                    {System.out.print(i + "\t");
                    count++;}
                i++;
            }
            System.out.println();
        }
    }
}

老师:

不嵌套也可以哈~

第七题

输出的时候可以强制转换一下就不会出数字了!

import java.util.Scanner;

public class day7 {
    public static void main(String[] args) {
        // Scanner mysc = new Scanner(System.in);
        // System.out.println("input your integer(abc)~");
        // int x = mysc.nextInt();
        char c1 = 'a';
        char c2 = 'Z';
        for(int i=0;i<26;i++)
            System.out.print((char)(c1+i));
        System.out.println();
        for(int i=0;i<26;i++)
            System.out.print((char)(c2-i));
        // mysc.close(); 
    }
}

第八题

注意一下sum和flag都是整数,转成double才好算~

import java.util.Scanner;

public class day7 {
    public static void main(String[] args) {
        // Scanner mysc = new Scanner(System.in);
        // System.out.println("input your integer(abc)~");
        // int x = mysc.nextInt();
        double sum = 0;
        int flag=1;
        for(int i=1;i<=100;i++){
            sum+=(double)flag/i;
            flag*=-1;
        }
        System.out.println(sum);
        // mysc.close(); 
    }
}

第九题

import java.util.Scanner;

public class day7 {
    public static void main(String[] args) {
        // Scanner mysc = new Scanner(System.in);
        // System.out.println("input your integer(abc)~");
        // int x = mysc.nextInt();
        int s1 = 0;
        for(int i =1;i<=100;i++){
            for(int j=1;j<=i;j++){
                s1+=j;
            }
        }
        System.out.println(s1);
        // mysc.close(); 
    }
}

这个思路妙啊!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1658479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[windows系统安装/重装系统][step-2]BIOS设置UEFI引导、磁盘分区GPT分区、安装系统[含完整操作拍照图片]

背景 先准备U盘启动盘和系统镜像: [windows系统安装/重装系统][step-1]U盘启动盘制作&#xff0c;微软官方纯净系统镜像下载 前言&#xff08;略长&#xff0c;建议可跳过&#xff09; 我的笔记本升级了CPU升级了内存后出现了一个小问题&#xff0c; 每次启动徽标显示后会…

ETL工具kettle(PDI)入门教程,Transform,Mysql->Mysql,Csv->Excel

什么是kettle&#xff0c;kettle的下载&#xff0c;安装和配置&#xff1a;ETL免费工具kettle(PDI)&#xff0c;安装和配置-CSDN博客 mysql安装配置&#xff1a;Linux Centos8 Mysql8.3.0安装_linux安装mysql8.3-CSDN博客 1 mysql -> mysql 1.1 mysql CREATE TABLE user_…

JAVA二叉树相关习题5

1. 二叉树前序非递归遍历实现 。 . - 力扣&#xff08;LeetCode&#xff09; 递归的实现 public List<TreeNode> preOrder1(TreeNode root){List<TreeNode> retnew ArrayList<>();if(root null)return ret;ret.add(root);List<TreeNode> leftTree …

C#获取当前激活网卡的速度 - 开源研究系列文章

以前用C#编写过一个网络速度计&#xff0c;用于监控计算机当前网卡的上传和下载速度。不过当时这个小应用没有完成&#xff0c;主要是那个获取网络速度的类库没有完成。这次趁有空&#xff0c;就把这个小应用进行了编写。其中涉及到的获取网络速度的代码整理出来了&#xff0c;…

使用nvm安装node.js过程

今天Jade尝试安装nvm&#xff0c;并使用命令安装node.js但是碰到了一些问题&#xff0c;在此作为学习记录分享出来。希望可以留下深刻的印象&#xff1a; 1、概念了解 nvm----- (Node.js version manager)是一个命令行应用&#xff0c;可以协助您快速地 更新、安装、使用、卸载…

游戏工作室如何利用惯性动作捕捉技术制作动画?

随着动捕设备不断进步和游戏行业的发展&#xff0c;惯性动作捕捉技术在游戏开发领域逐渐普及。惯性动作捕捉技术&#xff0c;可以精准捕捉现实世界中的真人动作&#xff0c;并将其精准应用于虚拟角色上&#xff0c;使游戏中的角色动作可以呈现出更写实、逼真和沉浸感&#xff0…

ESP32引脚入门指南(三):从理论到实践(Touch Pin)

引言 ESP32作为物联网领域的明星微控制器&#xff0c;不仅以其强大的网络通信能力著称&#xff0c;还内置了丰富的外设资源&#xff0c;其中就包括电容式触摸传感&#xff08;Capacitive Touch&#xff09;功能。本文旨在深入浅出地介绍ESP32的Touch引脚&#xff0c;带你了解其…

数据分析处理的步骤是什么?制造业企业如何挑选数据分析处理软件?看这篇就够了

随着工业4.0的深入实施以及国家对制造业高质量发展战略的日益强调&#xff0c;工业数据已经崭露头角&#xff0c;成为生产经营活动中至关重要的核心要素。不仅如此&#xff0c;工业数据还作为优质的生产要素&#xff0c;为新兴生产力的形成提供了强有力的支撑&#xff0c;从而推…

《编译原理》阅读笔记:p4-p17

《编译原理》学习第 2 天&#xff0c;p4-p17总结&#xff0c;总计 14 页。 一、技术总结 1.structure of compiler 编译器组成包括&#xff1a;Lexical Analyzer -> Syntax Analazer -> Semantic tree -> Intermediate Code Generator -> Machine-Independent C…

Linux学习笔记1---Windows上运行Linux

在正点原子的教程中学习linux需要安装虚拟机或者在电脑上安装一个Ubuntu系统&#xff0c;但个人觉得太麻烦了&#xff0c;现在linux之父加入了微软&#xff0c;因此在Windows上也可以运行linux 了。具体方法如下&#xff1a; 一、 在Windows上的设置 在window的搜索框内&#…

Bert 在 OCNLI 训练微调

目录 0 资料1 预训练权重2 wandb3 Bert-OCNLI3.1 目录结构3.2 导入的库3.3 数据集自然语言推断数据集路径读取数据集数据集样例展示数据集类别统计数据集类加载数据 3.4 Bert3.4 训练 4 训练微调结果3k10k50k 0 资料 【数据集微调】 阿里天池比赛 微调BERT的数据集&#xff0…

LeetCode HOT 100刷题总结

文章目录 1 哈希1.1 1-1.两数之和&#x1f7e2;1.2 2-49.字母异位词分组&#x1f7e1;1.3 3-128.最长连续序列&#x1f7e1; 2 双指针2.1 4-283.移动零&#x1f7e2;2.2 6-15.三数之和&#x1f7e1;2.3 7-11.盛最多水的容器&#x1f7e1;2.4 8-42.接雨水&#x1f534; 3 滑动窗…

一、计算机基础(Java零基础一)

&#x1f33b;&#x1f33b;目录 一、&#x1f33b;&#x1f33b;剖析学习Java前的疑问&#x1f33b;&#x1f33b;1.1 零基础学习编程1.2 英语不好能学吗&#xff1f;1.3 理解慢能学好吗&#xff1f;1.4 现在学Java晚吗&#xff1f;1.5 Java 和 Python 还有 Go 的选择1.6 Java…

WINDOWS下zookeeper突然无法启动但是端口未占用的解决办法(用了WSL)

windows下用着用着时候突然zookeeper启动不了了。netstat查也没有找到端口占用&#xff0c;就是起不来。控制台报错 java.lang.reflect.UndeclaredThrowableException: nullat org.springframework.util.ReflectionUtils.rethrowRuntimeException(ReflectionUtils.java:147) ~…

Semaphore

文章目录 基本使用Semaphore 应用-改进数据库连接池Semaphore 原理1. 加锁解锁流程2. 源码分析 基本使用 信号量&#xff0c;用来限制能同时访问共享资源的线程上限。 public static void main(String[] args) {// 1. 创建 semaphore 对象Semaphore semaphore new Semaphore(…

let命令

let 命令 let 与 var 二者区别&#xff1a; 作用域不同&#xff1a;变量提升&#xff08;Hoisting&#xff09;&#xff1a;临时性死区重复声明&#xff1a; 联系&#xff1a;举例说明&#xff1a; 块级作用域 块级作用域的关键字使用 var&#xff08;无块级作用域&#xff09;…

C++中的std::bind深入剖析

目录 1.概要 2.原理 3.源码分析 3.1._Binder分析 3.2._CALL_BINDER的实现 4.总结 1.概要 std::bind是C11 中的一个函数模板&#xff0c;用于创建一个可调用对象&#xff08;函数对象或者函数指针&#xff09;的绑定副本&#xff0c;其中一部分参数被固定为指定值&#xf…

​​​​【收录 Hello 算法】4.4 内存与缓存

目录 4.4 内存与缓存 4.4.1 计算机存储设备 4.4.2 数据结构的内存效率 4.4.3 数据结构的缓存效率 4.4 内存与缓存 在本章的前两节中&#xff0c;我们探讨了数组和链表这两种基础且重要的数据结构&#xff0c;它们分别代表了“连续存储”和“分散存储”两种物理…

Qt常用基础控件总结

一、按钮部件 按钮部件共同特性 Qt 用于描述按钮部件的类、继承关系、各按钮的名称和样式,如下图: 助记符:使用字符"&“可在为按钮指定文本标签时设置快捷键,在&之后的字符将作为快捷键。比如 “A&BC” 则 Alt+B 将成为该按钮的快捷键,使用”&&qu…

铁山靠之数学建模 - Matlab入门

Matlab基础 1. Matlab界面与基本操作1.1 matlab帮助系统1.2 matlab命令1.3 matlab功能符号1.4 matlab的数据类型1.5 函数计算1.6 matlab向量1.7 matlab多项式1.8 M文件1.9 函数文件1.10 matlab的程序结构1.11 echo、warning和error函数1.12 交互输入1.13 程序调试1.14 设置断点…