1.java的三大结构
可以说java的这三大结构包括其中的语句跟c语言上的基本上都是一样的。现在就当重新复习一遍吧!
1.顺序结构
2.分支结构
if语句
跟c语言的语法一模一样。就直接看文案了。
switch语句
java中的switch语句跟c语言中的switch几乎相同,但还是有一些区别。
其switch语法结构:
switch(表达式){
case 常量值1:{
语句1;
break;
}
case 常量值2:{
语句2;
break;
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}
先重点说一下其区别:说完之后再看文案(毕竟也没什么好讲的)
在c语言中switch括号里的只能是整形范围里的数据,字符也可以,因为其本质是整形,除此之外,其他都不行,像浮点型什么的。
到了java这,switch的括号里可以是除long之外的整形,就long不可以,当然字符本质属于整形,当然也可以,还可以包括String常量串 和枚举类型。 除此之外,其他类型像boolean类型,浮点数类型等都不可以包含在里面。
所以switch在java和c语言中的区别就在这里,其他都一样。
3. 循环结构
while循环
跟c语言的while循环一模一样。 下面就直接给文案。
break
跟c语言的break语法同理一样,会提前结束其存在的语法结构。(其能提前结束的语法结构有switch结构和循环结构(for ,while ,do while)
continue
continue跟c语言中的也一样,其只能作用于循环语句中(for,while,do while)。下面直接给文案。
for循环
java的for循环跟c语言的几乎是一模一样。但还是要在这说几个重要的点,再直接给文案。
在Java中for循环第一个语句和最后一个语句可以为空语句,但第二个不能为空语句
而在c语言中三个语句都可以空,这是因为在c语言中第二个空语句可以转换为真(布尔类型),而在Java中不能转换为布尔类型所以不能为空语句。
在java中,它跟c语言一样,for循环的第一个语句同样可以创建变量,并且能创建多个变量,但切记它们这些必须为同一个类型,也就是在第一个语句中只能出现一种数据类型去创建变量,不能出现第二种数据类型去创建变量
对于continue作用后 ,如果是do while 或者while都是直接开始判定条件,但在for循环中要经历for循环的最后一个语句才能开始判定条件 。所以很特殊(这个在c语言中讲过一遍,再复习一下)
do while 循环
do while 在循环中我们几乎用不到,基本都是用while循环 ,for循环。 但还是要了解下它。这里直接给文案吧。之前都学过没什么好说的。
2.输入输出
输出
System.out.println(msg); // 输出一个字符串或单个数据(整形或浮点型), 带换行
System.out.print(msg); // 输出一个字符串或单个数据(整形或浮点型), 不带换行
对于println和printf,其不仅能输出一个字符串,也能输出单个数据(单个数据如整形只要在括号里面填50,不需要填”50“(字符串类型)也能输出)
例子如下:一个字符串输出,一个单个数据(整形)输出,最终都是50.
System.out.printf(format, msg); // 格式化输出
printf在java中的作用跟在c语言中几乎差不多,都是格式化输出,基本一样。这里不多说,都知道格式。
int x = 10;
System.out.printf("x = %d\n", x)
格式化中的占位符 :
在c中学过的基础占位符在这都出现了,占位符基本都是一样的 。
这个表格没必要记住, 用到的时候根据需要查一下就行了
在这三个输出函数中,我们用的最多的都是println 函数。
输入
使用 Scanner 读取字符串/整数/浮点数
首先如果要使用Scannner就要在开头用这个包:import java.util.Scanner; // 需要导入 util 包
而后创建变量Scanner sc = new Scanner(System.in);
从而成功使用我们的变量去输入。如int age = sc.nextInt();
接收不同的数据类型要用不同的next类型。如以下
这里重点说nextLine和next
nextLine是读取一整行。(nextline只有在遇到换行符时会终止读取并把换行符也给读取到里面,开始时就碰到换行符则会只读取换行符)
next是读取一个字符串,在遇到空格就会终止。(一开始如果就碰到换行符或者空格,则直接跳过,直到识别到其他符号,终止则是碰到空格或者换行符则终止,所以并不会像nextLine一样一开始碰到换行符就终止了)
所以比如hello world nextLine能读取完,而next就只能读取hello 。
因为上述功能,所以会有一个bug:
我们此时填了40,再按个enter换行键就直接输出了,这是为什么呢。
前面我们提到过,nextLine开始就碰到换行键就会只读取换行符,所以40nextInt读取了,剩下一个换行符,换行符则就被nextLine读取到了并立刻终止,所以就因为这样就直接输出了。
而我们用next就是另一个结果,因为next最开始并不会识别换行符和空格符,识别到其他字符之后才会开始识别换行符和空格符(识别到了就终止了)。
下面这个就是成功现象。
但如果你坚持要用nextLine那也行,不妨设两个nextLine,第一个去抵消,第二个才去识别 。
使用 Scanner 循环读取 N 个数字,并求取其平均值
这就是个scanner循环,能不断循环输入。除此之外还有其他类型的循环输入如浮点型,字符串型的循环输入,这里不一一介绍了。
对于终止循环输入按enter键在这是行不通的,像要终止循环输入在idea里是要按ctrl+z的。
注意事项: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d). (idea是用ctrl+z去结束循环输入的)
所以在idea中要终止循环输入的话是按ctrl+z键,普通输入的话按enter就能终止了。(普遍适用于任何语言,有时候其他语言中ctrl+z要换成ctrl+d)
3.猜数字游戏
之前c语言里也学到过猜数字游戏。这里用java版的讲述一下。
import java.util.Random;
import java.util.Scanner;;
class Test {
public static void main(String[] args) {
Random random = new Random(); // 默认随机种子是系统时间
Scanner sc = new Scanner(System.in);
int toGuess = random.nextInt(100);//0到100不包括100
// System.out.println("toGuess: " + toGuess);
while (true) {
System.out.println("请输入要输入的数字: (1-100)");
int num = sc.nextInt();
if (num < toGuess) {
System.out.println("低了");
} else if (num > toGuess) {
System.out.println("高了");
} else {
System.out.println("猜对了");
break;
}
}
sc.close();
}
}
这里直接讲重点
在java中 ,直接Random()就是跟据当前时间生成随机数。而在c语言要实现较麻烦,还要用时间戳函数。所以java用起来真的很简单。
而如果你要用种子去生成随机数,也可以用Random(seed 数字(如123))(种子在c语言里学过),在这之后你程序每次启动后的第一次随机数,第二次随机数甚至以后的值都是固定的。
所以这就是猜数字游戏具体要讲的细节。