5.程序流程控制
流程控制语句时用来控制程序中各语言执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块
其他流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:
1.顺序结构:
程序从上到下逐行执行,中间没有任何判断和跳转
2.分支结构:
根据条件,选择性地执行某段代码
有if else 和switch-case两种分支语句
3.循环结构:
根据循环条件,重复性的执行某段代码
有while和do while和for三种循环语句
注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素
与c语言基本一致
例题:输入两个数mn,求最大公约数和最小公倍数:
package lianxiruanjinabao1;
import java.util.Scanner;
public class ForTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("输入两个正整数m;");
int m = scan.nextInt();
System.out.println("输入两个正整数n;");
int n = scan.nextInt();
int min = (m < n) ? m : n;
for (int i = min; i >= 1; i--) {
if (m % i == 0 && n % i == 0) {
System.out.println("最大公约数:" + i);
break;
}
}
int max =(m>n)?m:n;
for(int j =max;;j++){
if(j%m==0&&j%n==0){
System.out.println("最小公倍数:"+j);
break;
}
}
}
}
三位数水仙花的输出:
package lianxiruanjinabao1;
public class ForTest {
public static void main(String[] args) {
int num,a, b, c;
for (num = 100; num < 1000; num++) {
c = num % 10;
b = (num - c) % 100/10;
a = (num - c - b * 10) / 100;
if (num == Math.pow(a,3) + Math.pow(b,3)+ Math.pow(c,3)) {
System.out.println(num);
}
}
}
}
6.Scanner类
如何从键盘获取不同类型的变量:需要使用Scanner类
具体实现步骤:
1.导包:import java.util.Scanner
2.Scanner的实例化:Scanner scan=new Scanner(System.in)
3.调用Scanner类的相关方法(next() nextInt()等)来获取指定类型的变量
对于char型获取,Scanner没有提供方法,只能获取一个字符串。
简单的练习:
package lianxiruanjinabao1;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
System.out.println("请输入你的名字:");
String name = scan.next();
System.out.println(name);
System.out.println("请输入你的年龄:");
int age = scan.nextInt();
System.out.println(age);
System.out.println("请输入你的体重:");
double weight = scan.nextDouble();
System.out.println(weight);
System.out.println("你是人吗?(true or false)");
boolean isperson = scan.nextBoolean();
System.out.println(isperson);
System.out.println("请输入你的你的性别");
String gender = scan.next();
System.out.println(gender);
}
}
7.break和continue
break:经常在switch-case循环中使用,结束当前循环
continue:循环结构中,结束当次循环
8.数组
1.数组(Array)
数组是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式,对这些数据进行统一管理
数组的常见概念:
数组名
元素
角标、下标、索引
数组的长度
特点:数组是有序排列的
知识点:
1.数组属于引用数据类型。
2.创建数组对象会在内存中开辟一整块连续的空间
3.数组的长度一旦确定,就不能修改
2.数组的分类
1.按照维度:一维数组、二维数组。。
2.按照数组元素的类型:基本数据类型元素的数组,引用数据类型元素的数组
3.一维数组的使用
1.一维数组的声明和初始化
int [] ids;
//静态初始化,数组的初始化和数组元素的复制操作同时进行
ids=new int []{1001,1002,1003,1004};
//动态初始化,数组的初始化和数组元素的复制操作分开
int [] ids1 =new int[4];
2.如何调用数组的指定位置的元素
通过调用小标的方式调用
3.如何获取数组的长度
属性:length
System.out.println(ids1.length);
4.如何遍历数组
for循环的使用
for (int i=0;i< names.length;i++){
System.out.println(names[i]);
}
5.数组元素的默认初始化值
int [] arr = new int [4];
for(int i=0;i< arr.length;i++){
System.out.println(arr[i]);
}
char [] arr1 = new char [4];
for(int i=0;i< arr1.length;i++){
System.out.println(arr1[i]);
}
两个默认初始值不一样,原因在于char存储的内容为阿斯克码0
数组元素时引用数据类型是:null
9.Arrays类
1.判断两个数组是否相同:boolean isquit = Arrays.equals(arr1,arr2);
int[]arr1 =new int[]{1,2,3,4};
int[]arr2 =new int[]{1,2,3,4};
boolean isquit = Arrays.equals(arr1,arr2);
System.out.println(isquit);
2.输出数组信息:Arrays.toString(arr1)
System.out.println(Arrays.toString(arr1));
3.将指定值填入数组中Arrays.fill(arr1,10);
Arrays.fill(arr1,10);
System.out.println(Arrays.toString(arr1));
4.对数组进行排序:Arrays.sort(arr2);
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
5.查询数组中有没有某个数据:int index = Arrays.binarySearch(arr3,1);
int[] arr3 =new int []{-98,32,2,34,54,6,7,89,90};
int index = Arrays.binarySearch(arr3,1);
System.out.println(index);
没有的话返回负值</u