获取用户输入
/*
用
scanner.next();
scanner.nextLine();
接受数据
用
scanner.hasNext(); 有效字符串之间空白会被放做分隔符或结束符
scanner.hasNextLine(); 可接受空格,回车符为结束符
判断用户有没有输入
属于IO流,用完就要关掉
*/
Scanner scanner = new Scanner(System.in);
scanner.close();
增强for循环
numbers = {1,2,3,5,3};
for(int x : numbers){
print(x)
} //偷懒的
方法定义及调用——一个方法只完成一个功能
System.out.println()
类,对象,方法
public static int add(int a, int b){
//修饰符、数据类型、方法名字 (行参)
int sum = a+b //方法体
return sum;
}
add(1,2); //实参
方法重载
有相同名字,不同参数的方法
int add()
double add()
命令行传参
args[]
可变参数
void test(double x, int... i){
}
//在制定参数类型后加一个省略号
//一个方法治只能有一个可变参数,为最后一个参数
test(1);
test(1,1);
test(1,1,2);
A方法调用A方法
结构:
递归头
递归尾
边界条件
前阶段
返回阶段
java使用栈机制
简易计算器
public class Cacluator {
/*
实现思路:
写四个方法,加减乘除
利用循环进行交互:swatch
传递需要操作的两个数
输出结果
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
float result = 0;
while (true){
float a = 0;
float b = 0;
result = 0;
String method;
a = scanner.nextFloat();
method = scanner.next();
b = scanner.nextFloat();
switch (method){
case "+":
result = add(a,b);
break;
case "-":
result = sub(a,b);
break;
case "*":
result = mul(a,b);
break;
case "/":
result = devid(a,b);
break;
}
System.out.println(result);
}
}
public static float add(float a, float b){
return a + b;
}
public static float sub(float a, float b){
return a - b;
}
public static float mul(float a, float b){
return a * b;
}
public static float devid(float a, float b){
return a / b;
}
}
内存分析
int[] array = null;
![image-20210204224433686](/Users/lzy/Library/Application Support/typora-user-images/image-20210204224433686.png)
数组本书是对象,java中对象是在堆中的
new 出来的都在堆中
ArrayIndexOutofBounds——数组越界
Arrays类
数组操作:
打印数组、排序、比较、查找元素
冒泡排序
public class ArrayDemo01 {
/*
冒泡
比较相邻元素,如果比后面数大,则交换位置
下一轮可减少一次排序
循环结束,排序完成
*/
public static void main(String[] args) {
int[] array = {5,4,3,2,1};
sort(array);
}
public static void sort(int[] array){
for (int i = 0; i < array.length - 1; i++) {
for (int j = i+1; j < array.length; j++) {
if (array[i] > array[j]){
int temp = 0;
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
for (int i : array){
System.out.println(i);
}
}
}
稀疏数组
在数组中很多数为同一个值,
public class ArrayDemo02 {
public static void main(String[] args) {
//1.创建一个而二维素组 0:无子 1:黑子 2: 白子
int[][] array = new int[11][11];
array[9][3] = 1;
array[3][9] = 2;
//打印原数组
for (int[] arr1 : array){
for (int arr2 : arr1) {
System.out.print(arr2+"\t");
}
System.out.println();
}
//转换为稀疏数组并保存
//首先计算个数
int sum = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
if (array[i][j] != 0){
sum++;
}
}
}
//定义稀疏素组
int[][] array2 = new int[sum+1][3];
//遍历二维数组,将非零值存入稀疏数组中
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;
int count = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
if (array[i][j] != 0){
count++;
array2[count][0] = i;
array2[count][1] = j;
array2[count][2] = array[i][j];
}
}
}
System.out.println("稀疏数组");
for (int i = 0; i < array2.length; i++) {
for (int j = 0; j < array2[i].length; j++) {
System.out.print(array2[i][j]+ "\t");
}
System.out.println();
}
System.out.println("========================");
//还原数组
int[][] array3 = new int[array2[0][0]][array2[0][1]];
//取元素
for (int i = 1; i < array2.length; i++) {
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
System.out.println("输出还原数组");
for (int[] arr1 : array3){
for (int arr2 : arr1) {
System.out.print(arr2+"\t");
}
System.out.println();
}
}
}
原文:https://www.cnblogs.com/liangzynb/p/14375631.html