Java基础回顾_第二部分
Java流程控制
Scanner对象(扫描器,捕获输入)
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
System.out.println("使用nextLine方式接收:");//以回车和回车为结束符
if (scanner.hasNextLine()){
//使用nextLine方式接收
String str2 = scanner.nextLine();
System.out.println("输出的内容为:"+str2);
}
System.out.println("使用next方式接收:");//以空格为结束符
//判断是否还有输入
if (scanner.hasNext()){
//使用next方式接收
String str = scanner.next();
System.out.println("输出的内容为:"+str);
}
scanner.close();
}
}
个人总结:
Scanner对象有两个方法,next()和nextLine();
- next()输入是,只要输入了有效字符之后,输入空格就会使后续输入的字符失效,例如输入hello空格world,输出结果就只有hello;且如果一开始就输入空格,next()方法会自动无视,不影响后续输入有效字符。
- nextLine()输入是,不用管什么时候输入的空格或字符都有效,输入多少显示多少。只会在按回车键的时候结束输入。
自用练习题:
- 输入多个数字,求它们的总数与平均数,每输入一个数字就用回车确认一遍,当输入数据不是数字时,结束并输出结果。
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double sum = 0;//作为求和变的变量
int m = 0;//作为记录输入数字个数的变量
System.out.println("请输入任意个数字,并输入一个非数字的字符来结束输入:");
//while循环语句
while (scanner.hasNextInt()){
double i = scanner.nextInt();//用来记录每次输入的数字
m++;
sum+=i;
}
System.out.println("输入了"+ m + "个数字");
System.out.println("它们的总数为:"+ sum);
System.out.println("它们的平均数为:"+ sum / m);
scanner.close();
}
}
顺序结构
顺序结构是Java最简单的算法结构。即代码从上往下,一句一句执行。
选择结构:if语句、switch多选择结构
if语句
if单选 结构 只有iif和执行语句
if双选 结构 有if和else 两条执行语句
if多选 结构 有一个if和多个else if 多条执行语句
嵌套 的if结构
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入任意内容:");
if (scanner.hasNextInt()){
System.out.println("你输入的是整数~");
}
else{
System.out.println("你输入的不是整数");
}
String s = scanner.nextLine();
if (s.equals("abc")){
System.out.println("你猜中了!");
}
else {
System.out.println("你猜错了!");
}
scanner.close();
}
}
switch多选择结构(匹配机制)
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入任意内容:");
String str = scanner.nextLine();
switch (str){
case "A":
System.out.println("A等");
break;
case "B":
System.out.println("B等");
break;
case "C":
System.out.println("C等");
break;
case "D":
System.out.println("D等");
break;
case "E":
System.out.println("E等");
break;
default:
System.out.println("补考");
}
}
}
循环结构
- while循环---------------------->先判断布尔表达式,后执行代码
- do...while循环---------------->先执行代码,后判断布尔表达式(执行代码至少执行一次)
- for循环
- 增强for循环
while循环
格式:
while(布尔表达式){
//执行的代码;
}
public class Demo01 {
public static void main(String[] args) {
int i = 0;
while (i<10){
i++;
System.out.println(i);
}
}
}
do...while循环
格式:
do{
//执行的代码;
}while(布尔表达式);
public class Demo01 {
public static void main(String[] args) {
int i = 0;
do {
i++;
System.out.println(i);
}
while (i<10);
}
}
for循环
格式:
for(初始化值 i ;布尔表达式;i 值更新){
//执行代码;
}
public class Demo01 {
public static void main(String[] args) {
int i = 1;
for (i = 1;i<10;i++){
System.out.println(i);
}
System.out.println(i);//10----->布尔表达式为假的时候跳过执行代码,还会执行一次 i++;所以最后i变成了10!
}
}
练习题:
- 分别计算1到100之间奇数的和、偶数的和。
- 分别用while和for循环,输出1到1000之间能被5整除的数,并且每行输出三个数。
- 打印九九乘法表
- 分别计算1到100之间奇数的和、偶数的和。
public class Demo01 {
public static void main(String[] args) {
int i = 1;
int sum1 = 0;//奇数和
int sum2 = 0;//偶数和
for (i = 1;i<=100;i++){
if (i%2==0){
sum1 += i;
}else{
sum2 += i;
}
}
System.out.println("最后i的值为:"+i);
System.out.println("1到100,奇数和为:"+sum1);
System.out.println("1到100,偶数和为:"+sum2);
}
}
-
分别用while和for循环,输出1到1000之间能被5整除的数,并且每行输出三个数。
while方式
public class Demo01 {
public static void main(String[] args) {
int i = 1;
int j = 0;
while (i<=1000){
if(i%5 == 0){
System.out.print(i+"\t");
j++;
if (j%3 == 0){
System.out.print("\n");
}
}
i++;
}
}
}
for方式
public class Demo01 {
public static void main(String[] args) {
int j = 0;
for(int i = 1;i<=1000;i++){
if(i%5 == 0){
System.out.print(i+"\t");
j++;
if (j%3 == 0){
System.out.print("\n");
}
}
}
}
}
- 打印九九乘法表
个人思路:先打印出所有相乘的式子,然后观察99乘法表规律进行如下操作。
public class Demo01 {
public static void main(String[] args) {
for(int i = 1;i<=9;i++){
for (int j = 1;j<=9;j++){
//去掉乘号左边数字大于右边数字的式子,用空格代替显示-------->第三步
if (j>i){
System.out.print("\t");
}else {
System.out.print(j+"*"+i+"="+i*j+"\t");//----->第一步打印出所有式子
}
//j是乘号右边的数,每次乘到9的时候换行------->第二步
if(j==9){
System.out.print("\n");
}
}
}
}
}
改进后的思路:
public class Demo01 {
public static void main(String[] args) {
for(int i=1;i<=9;i++){
//用j<=i控制每一行输出的式子个数(妙啊!!!!!!!!!)
//通过循环累加,当j>i的时候跳出循环,从而不会打印 乘号左边的数字大于乘号右边的数字 的等式,妙啊!
for (int j=1;j<=i;j++) {
System.out.print(j + "*" + i + "=" + i * j + "\t");
}
//j>i时,跳出上面的for循环不打印 乘号左边的数字大于乘号右边的数字 的等式,直接执行下面的换行代码,妙啊!
//这样又去掉了想要去掉的 重复等式(类似1*2=2和2*1=1这样的重复等式) ,又达到了换行的效果,绝了!
System.out.print("\n");
}
}
}
增强for循环
格式:
for(声明语句:表达式){
//执行代码;
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
经常用于遍历数组
public class Demo01 {
public static void main(String[] args) {
//定义一个数组取名为List
int[] List = {1,2,3,4,5};
for (int i : List) {
System.out.println(i);
}
}
}
break和continue
break用与强制退出循环体,即终止循环,跳出循环体;
continue用于终止循环体的某一次循环,即跳过某一次循环操作,循环体继续工作到直到跳出循环体。
随笔:
什么是质数 ?
质数是指在大于1的所有自然数中,那些只能被1和本身整除的整数。
一个数如果不能以它本身的一半以内的数乘以另一个数得到,那么它就是一个质数!
流程控制练习
-
打印三角形
public class Demo01 {
public static void main(String[] args) {
//打印三角形
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >=i; j--) {
System.out.print(" ");
}
for (int j = 1; j <=i; j++) {
System.out.print("*");
}
for (int j = 1; j <i; j++) {
System.out.print("*");
} System.out.print("\n");
}
}
}