Java - LogicControl -逻辑控制,java最新面试题及答案

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输入好麻烦?

=================================================================================

是的,主要因为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


代码实例2


判定一个数字是奇数还是偶数

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语句的用法


代码示例3: 判定某一年份是否是闰年


图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(),都是关闭一个文件

// 不管也没问题,但最好还是写一下,

}

}


注意事项1:悬垂 if/else 问题


任何一行代码有括号就写上不要省略

例如

if(布尔表达式)

System.out.println(“hehe”);

else

System.out.println(“haha”);

虽然if后面可以不加括号,但是它只能管一条语句,代码一多就容易出现问题

所有我们要保持良好的习惯,要这么写

if(布尔表达式){

System.out.println(“hehe”);

}

else{

System.out.println(“haha”);

}


注意事项2: 代码风格问题


代码写得好不好,主要看可读性高不高(等价于 注释 和 风格好不好看) 和 效率高不高(程序运行速度快不快)

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中代码风格


注意事项3 分号问题


代码示例

if(布尔表达式);{// 这样写会导致后面的花括号里面的内容成为了,无条件都能执行,因为if(布尔表达式);的管理范围 到 分号就结束了。

所以对花括号里的内容起不到限制作用,所以后面的花括号里的内容,只要程序运行,它就会被无条件运行

System.out.println(“hehe”);

}

else{

System.out.println(“haha”);

}


&ensp

switch 语句

========================================================================

基本语法


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语句中



我们再来试试Java中特有的字符串类型


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 中的值只能是 整数|枚举|字符|字符串,这个就不多说,前面已经讲了



注意事项3 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 循环


基本语法格式:

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开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

那么如何才能正确的掌握Redis呢?

为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题

  • 并发编程面试题汇总

  • JVM面试题汇总

  • Netty常被问到的那些面试题汇总

  • Tomcat面试题整理汇总

  • Mysql面试题汇总

  • Spring源码深度解析

  • Mybatis常见面试题汇总

  • Nginx那些面试题汇总

  • Zookeeper面试题汇总

  • RabbitMQ常见面试题汇总

JVM常频面试:

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Mysql面试题汇总(一)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Mysql面试题汇总(二)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Redis常见面试题汇总(300+题)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

= 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)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 17
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值