public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);// 相当于 C语言中 scanf,从键盘输入一个数据
int n = scanner.nextInt();// nextInt 意思是读取一个整形数据,赋给 整形变量 n
}
}// 图1,为什么会显示找不到 Scanner 类, 因为没有引入 inport java.util.Scanner 类似C语言头文件的作用
图 1
.在这里有一个小技巧,在idea编译器中,只要你使用它推荐的方法Scanner ,它就会自动引入 inport java.util.Scanner
图 2 、图 3
图2
图3
如果你已经写完了 Scanner ,随便点击 Scanner 的一个位置,只要鼠标点完闪烁光标在 Scanner 上就行,按住 alt + 回车,它就会弹出框架,你只需选择就可以了,图4 和 图5
图4
图5
nextInt()的用法
图6
import java.util.Scanner;
public class LogicControl {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);// 相当于 C语言中 scanf,从输入一个数据
int n = scanner.nextInt();
// nextInt 意思是读取一个整形数据,赋给 整形变量 n,意味着你需要输入一个整形数据
// 因为Java对数据的类型非常严格,不同类型的值是无法进行赋值,就是说 如果你此时输入一个 非整形 的数据
// 那么程序 nextInt 读取数据毫无疑问会失败,导致程序运行不起来 图9
if(0 == n%2){//当 n 是偶数时,输出if输出语句
System.out.println(“偶数”);
}else{// 当 n 不是是偶数时(不满足if条件时),输出else语句
System.out.println(“奇数”);
}
}
}// 效果图 7, 8
图 7
图 8
图 9
=================================================================================
是的,主要因为Java 本身就不是用来开发控制台程序的,是用于 后台开发,偏应用性的语言
那么我们想输入输入一个字符串呢?
方法1
将 nextInt 的Int 改成 Line
即:nextLine
import java.util.Scanner;
代码如下
public class LogicControl {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();// 把 Int 改成 Line就OK了,意思是读取一行的数据
System.out.println(str);
int n = scanner.nextInt();
if(0 == n%2){//当 n 是偶数时,输出if输出语句
System.out.println(“偶数”);
}else{// 当 n 不是是偶数时(不满足if条件时),输出else语句
System.out.println(“奇数”);
}
}
}//图10
图10
方法2
把 nextLine 去掉 Line
即 next
代码如下
import java.util.Scanner;
public class LogicControl {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
// 此方法存在一个弊端,就是无法读取空格,且遇到空格后,不再读取后面的数据
System.out.println(str);
String str1=scanner.nextLine();// 而 nextLine 可以读取 空格数据,并往后一直读取
System.out.println(str1);
}
}//图11
图 11
但是请注意 如何我后面写的是 int n = scanner.nextInt的话,留下来的数据( world) 与nextInt的要读取的数据类型不匹配,程序会报错。
代码如下
import java.util.Scanner;
public class LogicControl {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
// 此方法存在一个弊端,就是无法读取空格,且遇到空格后,不再读取后面的数据
System.out.println(str);
int n =scanner.nextInt();
System.out.println(n);
}
}//图12
图12
public class LogicControl {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
String str = scanner.nextLine();
System.out.println(str);
if(0==n%2){
System.out.println(“偶数”);
}else{
System.out.println(“奇数”);
}
}
} 图13
图13
这个问题是无法解决的,是java的缺陷,所以以后在我们想要输入字符串和 整形数据时,字符串输入语句要写在前面。注意在以后工作,做项目的时候,慎重使用 Scanner
判定一个数字是奇数还是偶数
public class LogicControl {
public static void main(String[] args) {
int num = 10;
if (num > 0) {
System.out.println(“num 是正数”);//满足if条件执行该语句,其它语句就不执行了
} else if (num < 0) {
System.out.println(“num 是负数”);//满足else if条件执行该语句,其它语句就不执行了
} else {
System.out.println(“num 是 0”);//不满足上面所有条件,执行该语句,其它语句就不执行了
}
}
}// 这个程序我就不讲了,你们自己看看就行,主要是了解一下 if语句的用法
图14
代码如下
public class LogicControl {
public static void main(String[] args) {
int year = 2000;
if (year % 100 == 0) {
// 判定世纪闰年
if (year % 400 == 0) {
System.out.println(“是闰年”);
} else {
System.out.println(“不是闰年”);
}
} else {// 不能被100 整除,走else语句
// 普通闰年
if (year % 4 == 0) {
System.out.println(“是闰年”);
} else {
System.out.println(“不是闰年”);
}
}
}
}
让我们来优化一下上程序
import java.util.Scanner;
public class LogicControl {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int year = scanner.nextInt();
if ((year % 100 != 0 && 0 == year%4) || 0==year%400) {
// 普通闰年
System.out.println(“普通闰年”);
}if(0 == year%100 && 0==year%400){
// 实际闰年
System.out.println(“世纪闰年”);
}
scanner.close();//这里跟C语言的文件操作时一样的,打开文件,就需要关闭文件
// scanner在Java中是一种资源,System.in 相当于打开键盘,键盘其实也是一个文件
// 所以更C语言文件操作是一样的,打开一个文件,就需要关闭一个文件
// scanner.close 就类似于 C语言中 fclose(),都是关闭一个文件
// 不管也没问题,但最好还是写一下,
}
}
任何一行代码有括号就写上不要省略
例如
if(布尔表达式)
System.out.println(“hehe”);
else
System.out.println(“haha”);
虽然if后面可以不加括号,但是它只能管一条语句,代码一多就容易出现问题
所有我们要保持良好的习惯,要这么写
if(布尔表达式){
System.out.println(“hehe”);
}
else{
System.out.println(“haha”);
}
代码写得好不好,主要看可读性高不高(等价于 注释 和 风格好不好看) 和 效率高不高(程序运行速度快不快)
java程序的代码风格,代码示例
java程序的代码风格
if(布尔表达式){
System.out.println(“hehe”);
}else{
System.out.println(“haha”);
}
C语言的风格
if(布尔表达式)
{
System.out.println(“hehe”);
}
else
{
System.out.println(“haha”);
}
注意 Java跟C语言的代码风格不同,两者不能混淆
我们现在是在学Java,所以写Java代码时,一定要使用Java的代码风格!!!
前花括号一定要跟在 表达式/类/方法 的后面,这是Java中代码风格
代码示例
if(布尔表达式);{// 这样写会导致后面的花括号里面的内容成为了,无条件都能执行,因为if(布尔表达式);的管理范围 到 分号就结束了。
所以对花括号里的内容起不到限制作用,所以后面的花括号里的内容,只要程序运行,它就会被无条件运行
System.out.println(“hehe”);
}
else{
System.out.println(“haha”);
}
&ensp
========================================================================
public class LogicControl {
public static void main(String[] args) {
switch(整数|枚举|字符|字符串){
case 内容1 : {
内容满足时执行语句;
break;
}
case 内容2 : {
内容满足时执行语句;
break;
}
…
…
default:{
内容都不满足时执行语句;
break;
}
}
}
}
public class LogicControl {
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;
default:
System.out.println(“参数不能匹配”);
break;
}
}
}//图 15
图15
现在让我们来看看看那些类型 数据 不可以运用到 switch 语句中(int 是绝对可以的)
byte
public class LogicControl {
public static void main(String[] args) {
byte a =1;
switch (a){
case 1:
System.out.println(“1”);
break;
case 2:
System.out.println(“2”);
break;
default:
System.out.println(“参数不能匹配”);
break;
}
}
}//图 16,有结果得知可以
图16
short
public class LogicControl {
public static void main(String[] args) {
short a =1;
switch (a){
case 1:
System.out.println(“1”);
break;
case 2:
System.out.println(“2”);
break;
default:
System.out.println(“参数不能匹配”);
break;
}
}
}//图 17,有结果得知可以
图17
long
public class LogicControl {
public static void main(String[] args) {
long a =1;
switch(a){
case 1:
System.out.println(“1”);
break;
case 2:
System.out.println(“2”);
break;
default:
System.out.println(“参数不能匹配”);
break;
}
}
}//图 18,有结果得知不可以
图18
float 、double
public class LogicControl {
public static void main(String[] args) {
// float a =1.0f;
double a =1.0;
switch(a){
case 1:
System.out.println(“1”);
break;
case 2:
System.out.println(“2”);
break;
default:
System.out.println(“参数不能匹配”);
break;
}
}
}//图 19、20,由结果得知都不可以
图19
图20
char
public class LogicControl {
public static void main(String[] args) {
char a = ‘f’;//可以
switch (a){
case ‘f’:
System.out.println(“1”);
break;
case ‘g’:
System.out.println(“2”);
break;
default:
System.out.println(“参数不能匹配”);
break;
}
}
}// 图21,由结果可知可以
图21
boolean
public class LogicControl {
public static void main(String[] args) {
boolean a = true;
switch(a){
case true:
System.out.println(“1”);
break;
case false:
System.out.println(“2”);
break;
default:
System.out.println(“参数不能匹配”);
break;
}
}
}// 图22,由结果可知不可以
图22
总结:在Java中的八大基础数据类型,有4种(long、double、float、boolean)不能运用在switch语句中
public class LogicControl {
public static void main(String[] args) {
String a = “hehe”;
switch(a){
case “hehe”:
System.out.println(“1”);
break;
case “haha”:
System.out.println(“2”);
break;
default:
System.out.println(“参数不能匹配”);
break;
}
}
}// 图23,由结果可知可以
图23
在jdk1.5开始,引入了枚举,枚举是可以运行到switch语句中的,这点和C语言一样。在这里就不举例子,讲到枚举时,再细讲
注意事项1: break 不要遗漏, 否则会失去 “多分支选择” 的效果(就是说会输出 其他条件的case语句)
public class LogicControl {
public static void main(String[] args) {
int day =1;
switch (day){
case 1:
System.out.println(“1”);
case 2:
System.out.println(“2”);
break;
}
}
}// 图24
图24
注意事项2 switch 中的值只能是 整数|枚举|字符|字符串,这个就不多说,前面已经讲了
例如: 如果 num 的值在 0 到 10 之间, 就打印 hehe,这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
if (num > 0 && num < 10) {
System.out.println(“hehe”);
}// 图 25
图25
注意事项4 switch 虽然支持嵌套, 但是很丑~,歪七扭八的
public class LogicControl {
public static void main(String[] args) {
int x = 1;
int y = 1;
switch(x) {
case 1:
switch(y) {
case 1:
System.out.println(“hehe”);
break;
}
break;
case 2:
System.out.println(“haha”);
break;
}
}
}
结论 代码的美观程度也是一个重要的标准. 毕竟这是看脸的世界
===================================================================
while(布尔表达式) do while(布尔表达式) for(表达式1;布尔表达式2;表达式3)
基本语法格式:
while(循环条件){
循环语句;
}
循环条件(布尔表达式)为 true, 则执行循环语句; 否则结束循环
代码实例 1
(把 1~10 全部按加起来)
public class LogicControl {
public static void main(String[] args) {
int i =1;
int sum = 0;
while(i<=3){// 1.i1、 2.i2、3,i==3、 4.i == 4 不满足循环条件,为假(false)。跳出循环
sum= sum+i;
// 1. sum = sum+i == 0+1==1
// 2. sum = sum +i == 1 + 2 == 3
// 3. sum = sum +i == 3 + 3 == 6
i++;
// 1.i =2;
// 2.i = 3
// 3.i = 4;
}
System.out.println(sum);//6
}
}// 图27,28 ,29,30
图27
图28
图29
图30
注意 千万不要像C语言一样这样写死循环 while(1),在Java中,while里面放的是 布尔类型表达式,你只能这么写 while(true),明白嘛。
代码实例2(求阶乘)
public class LogicControl {
public static void main(String[] args) {
int n = 1;
int num = 1;// 这里num设置为1,不设置为0,是因为,设置0的话
// 后面while循环求阶乘,就没有意义了。 0 乘以任何数都为0.
while (n <= 5) {
num *= n;
// num = num * n
// 1. num = 1 * 1 == 1 (n==1)
// 2. num = 1 * 2 == 2 (n==2)
// 3. num = 2 * 3 == 6 (n==3)
// 4. num = 6 * 4 == 24(n ==4)
// 5. num = 24 * 5 == 120(n==5)
等价于 1 * 2 * 3 * 4 * 5 == 120(5的阶乘)
n++;
//1. n = 2
//2. n = 3
//3. n = 4
//4. n = 5
//5. n = 6(在第五次循环时,n 自增加一等于6,返回while,判断循环条件不成立,跳出循环)
}
System.out.println(n);// 跳出循环后 n == 6
System.out.println(num);// num == 120
}
}// 图 31
图31
代码实例3(求 n! 的阶乘之和)
这里我们求3!的阶乘之和
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
那么如何才能正确的掌握Redis呢?
为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题
-
并发编程面试题汇总
-
JVM面试题汇总
-
Netty常被问到的那些面试题汇总
-
Tomcat面试题整理汇总
-
Mysql面试题汇总
-
Spring源码深度解析
-
Mybatis常见面试题汇总
-
Nginx那些面试题汇总
-
Zookeeper面试题汇总
-
RabbitMQ常见面试题汇总
JVM常频面试:
Mysql面试题汇总(一)
Mysql面试题汇总(二)
Redis常见面试题汇总(300+题)
= 1 (n==1)
// 2. num = 1 * 2 == 2 (n==2)
// 3. num = 2 * 3 == 6 (n==3)
// 4. num = 6 * 4 == 24(n ==4)
// 5. num = 24 * 5 == 120(n==5)
等价于 1 * 2 * 3 * 4 * 5 == 120(5的阶乘)
n++;
//1. n = 2
//2. n = 3
//3. n = 4
//4. n = 5
//5. n = 6(在第五次循环时,n 自增加一等于6,返回while,判断循环条件不成立,跳出循环)
}
System.out.println(n);// 跳出循环后 n == 6
System.out.println(num);// num == 120
}
}// 图 31
图31
代码实例3(求 n! 的阶乘之和)
这里我们求3!的阶乘之和
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-BrAt897I-1710966224208)]
[外链图片转存中…(img-LZDBfb6v-1710966224209)]
[外链图片转存中…(img-nJuHK5hG-1710966224209)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-urYjC9YF-1710966224209)]
那么如何才能正确的掌握Redis呢?
为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题
-
并发编程面试题汇总
-
JVM面试题汇总
-
Netty常被问到的那些面试题汇总
-
Tomcat面试题整理汇总
-
Mysql面试题汇总
-
Spring源码深度解析
-
Mybatis常见面试题汇总
-
Nginx那些面试题汇总
-
Zookeeper面试题汇总
-
RabbitMQ常见面试题汇总
JVM常频面试:
[外链图片转存中…(img-4cCyW2Vh-1710966224210)]
Mysql面试题汇总(一)
[外链图片转存中…(img-Q1a2HGTH-1710966224210)]
Mysql面试题汇总(二)
[外链图片转存中…(img-hK1EMdwx-1710966224211)]
Redis常见面试题汇总(300+题)
[外链图片转存中…(img-cs7hkHif-1710966224211)]