Java从零开始 第4讲 Java中的输入,三种基本执行结构和逻辑运算

本文详细介绍了Java编程中的输入方法,包括顺序、分支与循环结构,并解释了逻辑运算的基础知识。

一个简单的输入

为了完成输入,需用引用Java中自带的Scanner方法,为了使用Scanner方法,我们需要在类的声明之前添加以下代码

import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args){
        System.out.println("Hello World!");
}

并且在使用scanner前,必须实例化该方法,通过如下代码实现

Scanner scanner = new Scanner(System.in);

在之后就可以使用scanner进行输入,代码如下

String str1 = scanner.next();
String str2 = scanner.nextLine();
int i = scanner.nextInt();
long j = scanner.nextLong();
double k = scanner.nextDouble();
float l = scanner.nextFloat();
short m = scanner.nextShort();
boolean n = scanner.nextBoolean();

Q:为什么别的类型都只有一种输入方法,String却有两个呢。

String的两种输入方法next和nextLine有一定区别,在next中接收的String不会存在空格,而且在接收到第一段数据后只要有空格存在,后面的数据都不会被接受。

特别提示:next和nextLine最好不要同时使用,容易出现bug)

输入数据next接收数据nextLine接收数据
abcabcabc
空格无法接收数据空格
空格abc空格abc空格abc空格
空格abc空格efgabc空格abc空格efg

三种基本结构

顺序结构

所谓顺序结构,即为顺序运行,一行一行的运行,不跳过任何一行,正如我们之前所写的所有代码,都是顺序运行的。

分支结构

分支结构,即为在进入分支结构后,会根据情况选择是否进行分支结构里面的内容,可能全部执行,可能部分执行,也可能全部跳过,在这里我们将介绍两种主要的分支结构,if-else 和 switch-case

if-else结构

if-else结构是最经典的选择结构,其主要有四种形式

if(条件语句1){语句块1}

if(条件语句1){语句块1}else{语句块2}

if(条件语句1){语句块1}elseif(条件语句2){语句块2}

if(条件语句1){语句块1}elseif(条件语句2){语句块2}else{语句块2}

注意:if和else语句在一个if-else结构里只能有一个,而else if 语句则可以有无限个

我们来创造一个情景帮助理解一下if-else语句

小明是一个快乐的小学生,他口袋里面可能有一些硬币,但是他不伸手去摸,他也不知道自己有多少。小明回家路上经过了一家小卖部,他很想买一些吃的,小明最喜欢吃3块钱的薯片,但是如果没有三块钱,买一个一块钱的棒棒糖也不错,如果只有五毛,那就买一包辣条,现在让我们用if-else实现小明的想法。

小明.把手伸进口袋();
if(口袋里的钱 >= 3){
    小明开心的买下一包薯片;
}

else if(口袋里的钱 >= 1){     //不用判断<3,前面已经判断过不大于3
    小明愉快的买下一根棒棒糖;
}

else if(口袋里的钱 >= 0){
    小明买了一包辣条;
}

else{    //即小明口袋里的钱<0
    小明不开心回家了;
}

switch-case结构

switch-case结构也能实现分支的效果,主要为如下形式

switch(一个变量){ 
    case 取值1:
        语句块1;
        break;
        
    ....
    
    case 取值n:
        语句块n;
        break;
    default:
        语句块n+1;
        break;
 }

switch-case语句有一些规则:

  • 选取的变量必须是int, byte, char, short, String之一
  • case的取值必须是常量
  • default语句和break语句可以不写(如果没有break将往下执行)

让我们同样用小明来举例,但是这次有一些不一样,小明突然更爱吃棒棒糖了,所以即使他能买一包薯片,他也想买棒棒糖,让我们用switch-case来实现小明的想法

int money = 小明的钱;
switch(money){ 
    case 5:
    case 4:
        小明先买了一包薯片
    case 3:
    case 2:
    case 1:
        小明开心的买了一根棒棒糖;
        break;
    case 0:
        小明不开心的回家了;
        break;
 }

在这一段代码中,小明手里无论有3,2,1块,都会选择购买棒棒糖,手里没钱的时候则是什么都买不了,而如果小明手里有4块或5块,则小明可以霸气的选择我全都要,先买薯片再买棒棒糖

循环结构

循环结构可以让一段代码反复的运行,而不用使用重复的代码,在这里我将介绍两种循环结构,for循环和while循环

for结构

for循环是最通用的循环,其语法比较复杂,让我们先学习语法再举例

for (初始化参数;判断条件;更新循环变量){
    循环语句;
}

在for循坏的结构中,第一部分可以用于初始化参数,第二部分用于判断条件,决定是否继续循环,第三部分则是更新循环变量,在其中,只有判断条件是必须的,所以我们可以写出如下java结构

for(; i < 10;){循环语句}
//最简洁形式,只要i < 10,循环就会一直进行

for(int i = 1; i < 10;){循环语句}
//注意:此处定义的i只能在循环内部使用

for(int i = 1; i < 10; i++){循环语句}
//在每次循环语句执行完毕后,i++

让我们再次使用小明的例子,小明买了一包薯片准备吃,小明每次能吃一片薯片,假设他买到的薯片里面有30片,则小明吃薯片的过程能用如下代码实现

for (int 薯片数量 = 30; 薯片数量 > 0; 薯片数量--){
    小明吃薯片;
}

在薯片吃完之前,小明会保持一次一片的速率吃薯片,薯片将会一片一片减少,直到被完全吃完结束循环。

while结构

while结构和for结构区别不大,功能也没有for循环强大,这里给出两种基础用法

while (循环条件){
    循环语句;
}

do{
    循环语句;
}while(循环条件)

break与continue

循环结构一般需要一个出口,在允许的情况下,最好在定义结构时就写出一个出口,但是我们也可以在执行语句中加入break或者continue来手动中止或暂停循环
其中break可以被用来跳出循环,而continue则被用来跳过之后的代码,让我们用for循环和小明来举个例子

//小明在上课时偷偷吃薯片
for (int 薯片数量 = 30; 薯片数量 > 0; 薯片数量--){
    if(小明吃薯片被同桌看见了)
        continue;
    if(小明吃薯片被老师看见了)
        break;
    小明吃薯片;
}

小明吃薯片的时候,如果被同桌看见了,则小明拿起的这一片薯片就被同桌吃掉了,即后面的“小明吃薯片”语句会被跳过,而如果小明吃薯片被老师看见了,那么整包薯片都没了,小明再也吃不了这包薯片了。

逻辑运算

在本讲中,大量使用了判断语句(判断语句的特点是:结果为true或false,如3==4等同于false,4>3等同于true),如 小明口袋里的钱 > 3,和 薯片数量 > 0,在这一部分,我将详细的谈谈逻辑运算的问题
首先让我们来认识一下关系运算符和逻辑运算符,基础的关系运算符有 ==,>,<,<=,>=,!=,其中注意两点:

  • 在逻辑运算中,必须使用两个等于号,即==
  • !=为不等于号,3 != 4等同于true

再然后让我们认识一下逻辑运算符

运算符中文名运算方式示例
&同真才为真true&false = flase
|同假才为假true|false =true
^异或同号为假,异号为真true^false = true
!反号!true = false
&&短路与同与
||短路或同或

短路的意思是,在先判断左边条件后,如果能直接确定结果,则不会判断右边的条件,如果false && * = false,不会进一步判断右边的条件,在实战中可以用于减少代码时间复杂度。

转载请注明出处

<think>我们被要求生成一个关于Java编程语言基础教程的回答,并生成相关问题。 根据引用内容,我们可以整合以下信息: 引用[1]:Java基础教程,包括环境配置、编写运行Java程序、基本语法面向对象编程。 引用[2][3]:提供了Java学习路线,包括集合、IO流、线程、反射机制、注解等,但用户目前只需要基础知识。 引用[4]:从零开始Java,包括认识Java。 因此,我们可以将Java基础知识学习分为以下几个步骤: 1. 认识Java配置环境 2. 基本语法(变量、数据类型、运算符、控制流程等) 3. 面向对象编程(类、对象、继承、多态、接口、抽象类等) 4. 异常处理 5. 数组常用类 注意:用户要求从零开始,所以我们要从最基础的开始。 回答结构: 1. 引言:介绍Java为什么学习Java 2. 学习步骤:分步骤解,每个步骤给出关键点 3. 示例代码:展示一个简单的Java程序 4. 学习资源:可以提及参考的教程(根据引用) 然后,按照要求生成相关问题。 注意:引用标识要自然地添加在引用内容的末尾。由于我们的引用是来自给定的参考,我们可以在提及这些资源时添加引用标识。 另外,根据系统指令,数学表达式用$...$,但本问题中可能较少涉及数学表达式,但如果有,要遵守规则。独立公式用$$...$$。这里可能用不到,但要注意。 由于是中文回答,所以整个回答使用中文。 开始构建回答:</think>### Java编程语言基础教程:从零开始学习 #### 1. Java概述与环境配置 Java是一种面向对象、跨平台的编程语言,广泛应用于企业级开发、移动应用(Android)大数据领域。学习路径如下: - **环境搭建**:安装JDK(Java Development Kit),配置环境变量(JAVA_HOMEPATH) - **开发工具**:推荐使用IntelliJ IDEA或Eclipse - **第一个程序**: ```java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, Java!"); } } ``` 编译运行:`javac HelloWorld.java` → `java HelloWorld`[^4] #### 2. 核心语法基础 | 知识点 | 说明 | 示例 | |--------------|-----------------------|--------------------------| | 变量与数据类型 | 8种基本类型+引用类型 | `int age = 25;` | | 运算符 | 算术/关系/逻辑运算 | `boolean flag = (a > b) && (c != 0);` | | 控制语句 | if-else/for/while | `for(int i=0; i<10; i++){...}` | | 数组 | 定长容器 | `int[] arr = new int[5];` | #### 3. 面向对象编程(OOP) - **类与对象**:类是蓝图,对象是实例 ```java class Person { String name; void speak() { System.out.println("I'm " + name); } } // 创建对象 Person p = new Person(); p.name = "Alice"; p.speak(); ``` - **四大特性**: - **封装**:通过private属性getter/setter控制访问 - **继承**:`class Student extends Person` - **多态**:父类引用指向子类对象 - **抽象**:抽象类(abstract class)与接口(interface) #### 4. 进阶必备知识 - **异常处理**:try-catch-finally机制 ```java try { int result = 10 / 0; } catch (ArithmeticException e) { System.out.println("除零错误"); } ``` - **常用类库**: - String/StringBuilder处理字符串 - ArrayList/HashMap等集合类 - Math、Date等工具类 #### 5. 学习资源推荐 1. 官方Oracle Java教程(英文) 2. [Java零基础从入门到精通系列文档](引用[3]) 3. 配套视频教程(B站搜索"Java零基础") > **关键建议**:每天坚持编码练习,从控制台程序开始,逐步实现小项目(如计算器、学生管理系统)[^1][^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值