Java基础语法详解:逻辑控制与输入输出

晚来风
晚来风
发布时间:2026-10-13 | 5人浏览过
原创

本文系统讲解Java基础语法中的逻辑控制与输入输出机制。详细解析顺序、分支(if/switch)及循环(while/for/do-while)结构,重点对比Java与C语言在条件表达式类型及语法风格上的差异。同时介绍System.out输出、Scanner类读取各类数据及处理换行符的技巧,并通过猜数字游戏实例展示Random类的实际应用。

一、逻辑控制语句

1. 顺序结构

代码执行时默认按照从上到下的顺序逐行运行,这种机制称为顺序结构。执行顺序的不同会直接导致最终结果产生差异。例如:

System.out.println(1)
System.out.println(2)    
System.out.println(3)

上述代码的输出结果为 1(换行)2(换行)3,但如果调整代码执行顺序,结果将发生变化:

System.out.println(2)
System.out.println(3)    
System.out.println(1)

此时代码输出结果变为 2(换行)3(换行)1

2. 分支结构

2.1 if 语句

与 C 语言类似,Java 中的 if 语句同样包含三种基本形式:

形式一

if(布尔表达式){
    // 条件满足时执行的代码
}

形式二

if(布尔表达式){
    // 条件满足时执行的代码
}else{
    // 条件不满足时执行的代码
}

形式三

if(布尔表达式1){
    // 条件1满足时执行的代码
}else if(布尔表达式2){
    // 条件2满足时执行的代码
}else{
    // 条件都不满足时执行的代码
}

尽管形式相似,但 Java 与 C 语言在细节上存在显著区别:

1. 条件表达式必须为布尔类型,不能像 C 语言那样直接使用数值作为条件,例如:

int a = 10;
if(a){
    System.out.println(a);
}

此类代码在 Java 中是非法的,因为条件必须是布尔值。

int a = 10;
if(a > 0){
    System.out.println(a);
}

而以下代码则是正确的:

2. 代码风格方面,虽然 C 语言中常将大括号置于行首,但 Java 更推荐将左大括号 { 放在 if 或 else 的同一行,如上述三种形式所示。

3. 需注意“悬垂 else”问题,即 else 总是与离它最近的未匹配的 if 配对。例如:

int a = 2;
if(a>0)
	if(a>10)
		System.out.println("a > 10");
else 
	System.out.println("a > 0 && a <= 10");

在此示例中,最下方的 else 是与它最近的 if 进行匹配的。

2.2 switch 语句

Java 中的 switch 语句与 C 语言高度相似,若对 switch 及相关逻辑结构不熟悉,可参考相关的 C 语言注意事项。但两者并非完全一致,主要区别在于:

在 Java 中,switch(表达式) 对表达式的类型有严格限制。

它仅支持以下类型:整数(包括 byte、short、int)、字符(char)、字符串(String)以及枚举类型。

3. 循环结构

3.1 while 循环

Java 的 while 循环与 C 语言极为相似,唯一的区别在于:

while (表达式) 中的表达式必须为布尔值。

3.2 break

break 的作用是使包含它的最近一层循环提前结束,这一行为与 C 语言一致。

3.3 continue

continue 的功能是跳过当前循环的剩余部分,立即进入下一次循环迭代,这与 C 语言的行为相同。

3.4 for 循环

Java 中的 for 循环与 C 语言非常接近,唯一的差异在于:

for(表达式1;表达式2;表达式3) 中的表达式2作为循环判断条件,必须使用布尔值。

3.5 do while 循环

Java 的 do while 循环同样与 C 语言类似,区别在于:

while 后的循环条件必须是布尔值。

尽管语法支持,但通常不推荐使用 do while 循环,因为它至少会执行一次循环体,若不注意逻辑细节容易引发错误。

二、输入输出方式

1. 输出到控制台

1.基本语法

System.out.println(msg);		// 输出一个字符串,自带换行
System.out.print(msg);			// 输出一个字符串,不带换行
System.out.printf(format,msg);	// 格式化输出,括号内内容类似于 C 语言的 printf

2.代码示例

int a = 10;
System.out.println(a);			// 输出 a,自带换行
System.out.print(a);			// 输出 a,不带换行
System.out.printf("%d\n",a);	// 格式化输出,括号内内容类似于 C 语言的 printf

3.格式化输出表(随用随查)

转换符 类型 例子 输出结果
d 十进制整数 ("%d",100) 100
x 十六进制整数 ("%x",100) 64
o 八进制整数 ("%o",100) 144
f 定点浮点数 ("%f",100f) 100.000000
e 指数浮点数 ("%e",100f) 1.000000e+02
g 通用浮点数 ("%g",100f) 100.000
a 十六进制浮点数 ("%a",100) 0x1.9p6
s 字符串 ("%s",100) 100
c 字符 ("%d",‘1') 1
b 布尔值 ("%b",100) true
h 散列码 ("%h",100) 64
% 百分号 ("%.2f%%",2/7f) 0.29%

2. 从键盘输入

1.读入一个字符(不推荐使用)

直接使用 System.in.read() 可以读取一个字符,但必须配合异常处理。若未处理异常,如下代码会导致编译错误:

public static void main(String[] args) {
        System.out.print("Enter a char:");
        char i = (char)System.in.read();
        System.out.println("The char is :" + i);
    }

解决方法是将鼠标悬停在 read 上,然后按住 Alt + Enter 键,此时会弹出操作选项:

点击第一个或第二个选项即可消除报错。这实际上是自动处理了异常,但由于简单读取字符需如此复杂的操作,因此不推荐使用此方法。

2.使用 Scanner 读取字符/字符串/整数/浮点数/布尔值

1. 首先需导入 util 包:import java.util.Scanner;。在 IDEA 中,输入 Scanner 后直接回车即可快速导入。

2. 接着构造一个 Scanner 对象并将其与“标准输入流” System.in 关联:Scanner 对象名 = new Scanner(System.in);

3. 随后即可通过 Scanner 类的各种方法实现输入操作:

import java.util.Scanner;

public class TestDemo {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        int a = in.nextInt();			//读入一个整数
        double b = in.nextDouble();		//读入一个浮点数
        boolean c = in.nextBoolean();	//读入一个布尔值
        String s = in.next();			//读入一个字符串
    }
}

需要注意的是,上述读取字符串的方法以空白符为分隔符,因此只能读取第一个空格前的内容。若要读取包含空格的一整行字符,应使用:

String s = in.nextLine();

然而该方法存在缺陷:若该行代码前有其他读取语句,它可能会读取到前一行留下的回车符,导致直接结束。因此,该语句应置于所有读取代码的首位,或在其前添加:

in.nextLine();

用于消耗掉之前的回车符。

3. 在 C 语言中,我们可以编写如下代码来输入多组数据:

int a;
while(scanf("%d",&a) != EOF)
{
    // 内容
}

在 C++ 中,类似的代码如下:

int a;
while(cin>>a)
{
    // 内容
}

那么在 Java 中如何实现多组数据输入呢?代码如下:

Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
    int a = in.nextInt();
    // 内容
}

在 IDEA 中,可通过手动输入 Ctrl + D 结束;在 Windows 的 cmd 中,需手动输入 Ctrl + Z 结束;在 Linux 或 Mac 上,则输入 Ctrl + D 结束。

三、猜数字游戏

学习 C 语言时,我们可能接触过随机数生成或直接编写猜随机数游戏。那么在 Java 中如何实现呢?

1. 首先需了解 Java 中随机数的生成方式。

1. 首先导入 util 包:import java.util.Random;。在 IDEA 中,输入 Random 后直接回车即可快速导入。

2. 然后通过 Random 类的方法生成所需随机数,例如:

import java.util.Random;

public class TestDemo {
    public static void main(String[] args) {
        Random random = new random();	// 默认随机种子是系统时间
        int rand = random.nextInt(bound:100) + 1;
        // random.nextInt(bound:100) 是生成[0,100)间的随机整数
    }
}

接下来只需将用户输入的数字与随机数字进行比较,直到判断正确后退出循环即可。最终完整代码如下:

public class TestDemo {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();
        int rand = random.nextInt(100) + 1;
        while (true){
            System.out.print("请输入你所猜测的数字:");
            int num = scanner.nextInt();
            if(num == rand){
                System.out.println("恭喜你,猜对了!");
                break;
            }else if(num < rand){
                System.out.println("很遗憾,你猜的数字小了!");
            }else{
                System.out.println("很遗憾,你猜的数字大了!");
            }
        }
    }
}

四、总结

本文到此结束,希望能对您有所帮助,也欢迎您关注本站获取更多技术内容!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表