疯狂Java基础Day2
巩固Java流程控制的学习。。。
一、用户交互Scanner
通过Scanner类获取用户的输入
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
//创建一个扫描对象,用于接收键盘数据
Scanner sc = new Scanner(System.in); //hello world
System.out.println("使用next方式接收:");
//判断用户有没有字符串输入
if (sc.hasNext()){
//用next方式接收
String s = sc.next(); //hello
System.out.println("输出内容为:"+s);
}
sc.close(); //凡是属于IO流的类如果不关掉就一直会占用资源
}
}
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
//创建一个扫描对象,用于接收键盘数据
Scanner sc = new Scanner(System.in); //hello world
System.out.println("使用nextLine方式接收:");
//判断用户有没有字符串输入
if (sc.hasNext()){
//用next方式接收
String s = sc.nextLine(); //hello world
System.out.println("输出内容为:"+s);
}
sc.close(); //凡是属于IO流的类如果不关掉就一直会占用资源
}
}
对于next()和nextLine():后者更常用
- next()
- 一定要读到有效字符串后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为结束符
- next()不能得到带有空格的字符串
- nextLine()
- 返回输入回车之前的所有字符
- 可以得到空白
小案例:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并执行结果。
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//和
double sum = 0.0;
//计算输入了多少个数字
int n = 0;
//通过循环判断是否还有输入,并在里面对每一次进行求和统计
while (scanner.hasNextDouble()) {
double x = scanner.nextDouble();
n++;
sum = sum+x;
}
System.out.println(n+"个数的和为:"+sum);
System.out.println(n+"个数的平均值为:"+(sum/n));
scanner.close();
}
}
二、顺序结构
按顺序一句一句执行,自上而下
三、选择结构
1、if单选择结构
if(布尔表达式) {
//如果布尔表达式为true将执行的语句
}
2、if双选择结构
if(布尔表达式) {
//如果布尔表达式为true将执行的语句
}else {
//如果布尔表达式为false将执行的语句
}
3、if多选择结构
if(布尔表达式 1) {
//如果布尔表达式 1的值为true将执行的语句
}else if(布尔表达式 2) {
//如果布尔表达式 2的值为false将执行的语句
}else if(布尔表达式 3) {
//如果布尔表达式 3的值为false将执行的语句
}else {
//如果以上布尔表达式都不为true将执行的语句
}
4、if嵌套结构
if(布尔表达式 1) {
//如果布尔表达式 1的值为true执行的语句
if(布尔表达式 2) {
//如果布尔表达式 2的值为true执行的语句
}
}
5、switch选择结构
switch(expression) {
case value:
//语句
break; //可选
case value:
//语句
break; //可选
//任意数量case语句
default: //可选
//语句
}
case具有穿透能力,switch的优势在于:可以匹配一个具体的值
//理解case的穿透力
public class Demo5 {
public static void main(String[] args) {
char grade = 'C';
switch (grade) {
case 'A':
System.out.println("满分");
case 'B':
System.out.println("优秀");
case 'C':
System.out.println("及格");
case 'D':
System.out.println("不及格");
default:
System.out.println("未知");
}
}
}
//及格
//不及格
//未知
通过输出结果发现,case后的结果全部输出,为了避免该种现象,我们只需加上break
注意:jdk7后,switch支持字符串String类型
public class SwitchDemo {
public static void main(String[] args) {
//须知:字符的本质还是数字
//反编译即可发现
String fruit = "大西瓜";
switch (fruit) {
case "大西瓜":
System.out.println("大西瓜");
break;
case "草莓":
System.out.println("草莓");
break;
case "菠萝":
System.out.println("菠萝");
break;
default:
System.out.println("哈密瓜");
}
}
}
反编译一下:

四、循环结构
1、while循环
while(布尔表达式) {
//循环内容
}
大多数情况下需要一个表达式失效的方式来结束循环
2、dowhile循环
do {
//代码语句
}while(布尔表达式)
while和do...while的区别
- do...while循环至少会执行一次
- while先判断后执行,do...while先执行后判断
3、for循环
for(初始化;布尔表达式;更新) {
//代码语句
}
最有效、最灵活的循环结构!
关于计算1+2+...+100=?的不同解法:
public class WhileDemo {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i<=100) {
sum = sum+i;
i++;
}
System.out.println(sum);
}
}
public class DoWhileDemo {
public static void main(String[] args) {
int i = 0;
int sum = 0;
do {
sum = sum+i;
i++;
}while (i<=100);
System.out.println(sum);
}
}
public class ForDemo {
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i <= 100; i++) {
sum = sum+i;
}
System.out.println(sum);
}
}
4、增强for循环
for(声明语句:表达式) {
//代码语句
}
遍历用法:
public class EnhanceFor {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
//普通for
for (int i = 0; i < 5; i++) {
System.out.println(arr[i]);
}
System.out.println("=====================");
//增强for
for (int x:arr
) {
System.out.println(x);
}
}
}
5、break与continue
break用于强行退出循环
continue用于终止某次循环
疯狂Java基础Day2的更多相关文章
- java基础-day2
第02天 java基础知识 今日内容介绍 u Eclipse的安装.配置及使用 u 运算符 u 键盘录入 第1章 Eclipse开发工具 1.1 Eclipse概述和安装 Eclipse是一个I ...
- 疯狂Java基础Day1
--每过一遍基础,都是一次提升! 太多遗忘了,慢慢补... 推一个Java学习教程--->b站搜:狂神说Java系列(排序完毕) 推荐原因:讲的不错,会涉及到底层,也会讲讲面试. 一.注释 主要 ...
- java基础day2
Java标识符命名规则: 标识符由字母,下划线“_”.美元符号$或数字组成/ 不能以数字开头 区分大小写 不能是关键字 “ 见名知意” 约定俗成的规则 类名:首字母大写变量名:除第一个单词外小写,其他 ...
- udp协议基础(转自疯狂java讲义)
第17章 网络编程 17.4 基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...
- Java基础进阶整理
Java学习笔记整理 本文档是我个人整理的,首先是想通过完成本文档更加扎实自己的基础加强对java语言的理解,然后就是想给入了门的同志们做下贡献. 当然,本文档主要是对java语言基础(当然还有很多基 ...
- 《疯狂Java讲义》(一) ---- 关于学习Java的反思
"听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...
- 《疯狂java讲义》笔记 1-5章
1.编译语言和解释语言理解,摘自李刚老师的<疯狂Java讲义>第三版: 就是说,Java和.net都是编译型有事解释型语言.编译型就是根据不同平台编译成不同的可执行机器码,编译过程中会进行 ...
- 《疯狂java讲义》读后感
<疯狂java讲义·第三版>,全书共851页,18章. 目录如下: 第1章 Java语言概述与开发环境 第2章 理解面向对象 第3章 数据类型和运算符 第4章 流程控制与数组 第5章 面向 ...
- 如何学习java?Java基础知识点分享
面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...
随机推荐
- 计算机网络参考模型和5G模型的那些事
一.分层思想 二.OSI参考模型 三.TCP/IP协议族 四.数据封装和解封装过程 五.层间通讯过程 六.3GPP规范及5G协议栈 一.分层思想 享用牛奶的人未必了解其生产过程 使用网络的人未必知道数 ...
- rune和byte在处理字符/字符串中的应用.
rune和byte在处理字符/字符串中的应用. 定义: rune是int32的别名,-2147483648->2147483647,常用来表示UNICODE字符集,可以用来处理包含中文/非中文的 ...
- PTA 面向对象程序设计 7-1 2017Final 圆周率山
7-1 2017Final 圆周率山 为了参加学校的社团风采展,怡山小学数学组的同学们决定画一座圆周率山,以宣传圆周率. 已知圆周率为:3. 1415926535 8979323846 2643383 ...
- Jwt的新手入门教程
Jwt的新手入门教程 1.Jwt究竟是什么东东? 先贴官网地址:JSON Web Tokens - jwt.io 再贴官方的定义: What is JSON Web Token? JSON ...
- 【PHP数据结构】线性表?顺序表?链表?别再傻傻分不清楚
遵从所有教材以及各类数据结构相关的书书籍,我们先从线性表开始入门.今天这篇文章更偏概念,是关于有线性表的一个知识点的汇总. 上文说过,物理结构是用于确定数据以何种方式存储的.其他的数据结构(树.图). ...
- Java基础系列(13)- 包机制
包机制 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间 包语句的语法格式为: package pkg1[. pkg2[. pkg3...]]; 一般利用公司域名倒置作为报名 为了能够使 ...
- Python+Pygame开发太空大战/飞机大战完整游戏项目(附源代码)
项目名称:太空大战 开发环境:Python3.6.4 第三方库:Pygame1.9.6 代码编辑器:Sublime Text 先来看一下游戏画面吧! 游戏画面动态且丰富哦! 需求分析 利用Pyt ...
- Jmeter集合点技术
集合点简介 好比小学时候做广播体操,先让大家集合,等到时间统一开始做体操. 创建集合点 同步定时器 同时签到 注意:作用域 参数设置 用户数 为0 具体数值,不能大于 超时时间 为0,没有超时时间 具 ...
- Linux服务器时间同步配置
Linux服务器时间同步配置 以CentOS7 做时间服务器,其他服务器(Centos 6.RHEL7)同步该服务器时间 RHEL 7.CentOS 7 默认的网络时间协议 为Chrony 本教程 ...
- YbtOJ#791-子集最值【三维偏序】
正题 题目链接:http://www.ybtoj.com.cn/contest/123/problem/1 题目大意 给出\(3\)个长度为\(n\)的排列\(A,B,C\).然后一个下标集合\(S\ ...