|
@@ -1,542 +0,0 @@
|
|
|
-package com.sf.sx2;
|
|
|
-
|
|
|
-import org.junit.Test;
|
|
|
-
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Scanner;
|
|
|
-
|
|
|
-public class Te2 {
|
|
|
- /**
|
|
|
- * 从键盘输入
|
|
|
- * @param args
|
|
|
- */
|
|
|
- public static void main(String[] args) {
|
|
|
- /**
|
|
|
- * 从键盘输入 通过java提供的Scanner类
|
|
|
- * 提供了一些方法 数据类型
|
|
|
- * eg: 1 1.1 hello A
|
|
|
- * 1、创建Scanner类的这个对象
|
|
|
- * Scanner scanner = new Scanner(System.in);
|
|
|
- * System.in : 输入流 InputStream
|
|
|
- * 整型:nextInt
|
|
|
- * 字符串:next
|
|
|
- * 字符:next().charAt(index)
|
|
|
- * eg:Hello 0 --> H
|
|
|
- *
|
|
|
- */
|
|
|
-// Scanner scanner = new Scanner(System.in);
|
|
|
-// char c = scanner.next().charAt(0);
|
|
|
-// int nextInt = scanner.nextInt();
|
|
|
-// scanner.close(); // 学习阶段 关不关都可以
|
|
|
-
|
|
|
- /**
|
|
|
- * 请输入你的网名(String)、你的年龄(int)、
|
|
|
- * 你的体重(double)、你是否单身(boolean)、
|
|
|
- * 你的性别(int 1男 2 女)等情况。
|
|
|
- */
|
|
|
-// Scanner scanner = new Scanner(System.in);
|
|
|
-// System.out.println("请输入网名~");
|
|
|
-// String name = scanner.next();
|
|
|
-// System.out.println(name);
|
|
|
-// System.out.println("请输入年龄~");
|
|
|
-// int age = scanner.nextInt();
|
|
|
-// System.out.println(age);
|
|
|
-// System.out.println("请输入体重~");
|
|
|
-// double weight = scanner.nextDouble();
|
|
|
-// System.out.println(weight);
|
|
|
-// System.out.println("请输入是否单身~");
|
|
|
-// boolean single = scanner.nextBoolean();
|
|
|
-// System.out.println(single);
|
|
|
-// System.out.println("请输入您的性别,int 1男 2 女");
|
|
|
-// int sex = scanner.nextInt();
|
|
|
-// if(sex == 1)
|
|
|
-// System.out.println("男");
|
|
|
-// else
|
|
|
-// System.out.println("女");
|
|
|
-// scanner.close();
|
|
|
-
|
|
|
- /**
|
|
|
- * 大家都知道,如果想成为一名ikun,当然要提出一定的条件:是否中分:是; 背带裤:是; 篮球:是。
|
|
|
- * 如果这三个条件同时满足,则:“真爱粉”
|
|
|
- * 如果三个条件有为真的情况,则:“假ikun”
|
|
|
- * 如果三个条件都不满足,则:“小黑子!”
|
|
|
- */
|
|
|
-// Scanner scanner = new Scanner(System.in);
|
|
|
-// System.out.println("是否中分:是;");
|
|
|
-// String next1 = scanner.next();
|
|
|
-// String next2 = scanner.next();
|
|
|
-// String next3 = scanner.next();
|
|
|
-// System.out.println(next1);
|
|
|
-// System.out.println(next2);
|
|
|
-// System.out.println(next3);
|
|
|
-// if(next1.equals("是") && next2.equals("是") && next3.equals("是")){
|
|
|
-// System.out.println("真爱粉");
|
|
|
-// }else if (next1.equals("是") || next2.equals("是") || next3.equals("是")){
|
|
|
-// System.out.println("假爱粉");
|
|
|
-// }else {
|
|
|
-// System.out.println("黑粉");
|
|
|
-// }
|
|
|
-
|
|
|
- /**
|
|
|
- * 我家的狗n岁了,n岁的狗相当于人类多大呢?
|
|
|
- * 其实,狗的前两年每一年相当于人类的10.5岁,
|
|
|
- * 之后每增加一年就增加四岁。那么5岁的狗相当于人类多少年龄呢?
|
|
|
- * 应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。
|
|
|
- */
|
|
|
-// Scanner scanner = new Scanner(System.in);
|
|
|
-// int dogAge = scanner.nextInt();
|
|
|
-// double personAge = 0;
|
|
|
-// if(dogAge < 0){
|
|
|
-// System.out.println("不合法~~");
|
|
|
-// } else if (dogAge <= 2 && dogAge>0){
|
|
|
-// personAge = dogAge*10.5;
|
|
|
-// }else {
|
|
|
-// personAge = 2*10.5 + (dogAge - 2)*4;
|
|
|
-// }
|
|
|
-// System.out.println("5岁的小狗相当于人的"+personAge+"岁~");
|
|
|
- Scanner scanner = new Scanner(System.in);
|
|
|
- boolean flag = true;
|
|
|
- while (flag){
|
|
|
- int month = scanner.nextInt();
|
|
|
- switch (month){
|
|
|
- case 1:
|
|
|
- case 2:
|
|
|
- case 3:
|
|
|
- System.out.println("春季");
|
|
|
- flag = false;
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- case 5:
|
|
|
- case 6:
|
|
|
- System.out.println("夏季");
|
|
|
- flag = false;
|
|
|
- break;
|
|
|
- case 7:
|
|
|
- case 8:
|
|
|
- case 9:
|
|
|
- System.out.println("秋季");
|
|
|
- flag = false;
|
|
|
- break;
|
|
|
- case 10:
|
|
|
- case 11:
|
|
|
- case 12:
|
|
|
- System.out.println("冬季");
|
|
|
- flag = false;
|
|
|
- break;
|
|
|
- default:
|
|
|
- System.out.println("输入有误,请重新输入~");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void t1(){
|
|
|
- /**
|
|
|
- * 随机数
|
|
|
- * Math.random(); [0,1)
|
|
|
- * new Random();
|
|
|
- */
|
|
|
- System.out.println(Math.random());
|
|
|
- //[5,104] int
|
|
|
- // int [a,b] --> Math.random()*(b-a+1)+a
|
|
|
- for (int i= 0;i<10;i++){
|
|
|
- System.out.println(Math.random()*100+5);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void t2(){
|
|
|
-
|
|
|
- /**
|
|
|
- * switch case
|
|
|
- * 语法结构:
|
|
|
- * switch(变量){
|
|
|
- * csae 常量1:
|
|
|
- *
|
|
|
- * break;
|
|
|
- * csae 常量2:
|
|
|
- *
|
|
|
- * csae 常量3:
|
|
|
- *
|
|
|
- * default:
|
|
|
- * ps:case穿透
|
|
|
- *
|
|
|
- * }
|
|
|
- */
|
|
|
-
|
|
|
- String season = "summer";
|
|
|
- switch (season){
|
|
|
- case "spring":
|
|
|
- System.out.println("春天~");
|
|
|
- break;
|
|
|
- case "summer":
|
|
|
- System.out.println("夏天~");
|
|
|
- break; //终止 结束
|
|
|
- case "autumn":
|
|
|
- System.out.println("秋天~");
|
|
|
- break;
|
|
|
- case "winter":
|
|
|
- System.out.println("冬天~");
|
|
|
- break;
|
|
|
- default:
|
|
|
- System.out.println("输入有误~");
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- @Test
|
|
|
- public void t3(){
|
|
|
- /**
|
|
|
- * //键盘输入指定月份,打印该月份所属的季节。
|
|
|
- * 假如 :
|
|
|
- * 1,2,3 春季
|
|
|
- * 4,5,6 夏季
|
|
|
- * 7,8,9 秋季
|
|
|
- * 10,11,12冬季
|
|
|
- */
|
|
|
- int month = 1;
|
|
|
- switch (month){
|
|
|
- case 1:
|
|
|
- case 2:
|
|
|
- case 3:
|
|
|
- System.out.println("春季");
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- case 5:
|
|
|
- case 6:
|
|
|
- System.out.println("夏季");
|
|
|
- break;
|
|
|
- case 7:
|
|
|
- case 8:
|
|
|
- case 9:
|
|
|
- System.out.println("秋季");
|
|
|
- break;
|
|
|
- case 10:
|
|
|
- case 11:
|
|
|
- case 12:
|
|
|
- System.out.println("冬季");
|
|
|
- break;
|
|
|
- default:
|
|
|
- System.out.println("输入有误~12");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void t6(){
|
|
|
- /**
|
|
|
- * for循环
|
|
|
- * 语法结构:
|
|
|
- * 1、初始化部分 int i = 0; //index
|
|
|
- * 2、条件判断部分 for终止条件 (出口)
|
|
|
- * 3、迭代部分
|
|
|
- * 4、代码体部分
|
|
|
- * 执行流程:1 2 4 3 2 4 3 2
|
|
|
- * for( 1-int i = 0; 2- i<10; 3-i++){
|
|
|
- * // 4-代码体
|
|
|
- * for(){
|
|
|
- *
|
|
|
- * }
|
|
|
- *
|
|
|
- *eg:打印1~100之间所有奇数的和
|
|
|
- *
|
|
|
- *
|
|
|
- *
|
|
|
- *
|
|
|
- * while(){
|
|
|
- *
|
|
|
- * }
|
|
|
- *
|
|
|
- *
|
|
|
- * do{
|
|
|
- *
|
|
|
- * }while();
|
|
|
- *
|
|
|
- * for(){}; // 次数
|
|
|
- *
|
|
|
- *
|
|
|
- */
|
|
|
- int sum = 0;
|
|
|
- for (int i = 1;i<101;i++){
|
|
|
- if(i % 2 != 0){
|
|
|
- sum += i;
|
|
|
- }
|
|
|
- }
|
|
|
- System.out.println(sum);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 数组
|
|
|
- * 一维数组
|
|
|
- * 作业1:重写数组中的toString();方法 // [1, 2, 3, 6]
|
|
|
- *
|
|
|
- * 作业2: 找最值及其第一次出现的下标
|
|
|
- *
|
|
|
- *
|
|
|
- * **举例1:**数组统计:求总和、均值
|
|
|
- *
|
|
|
- * **举例2:**求数组元素的总乘积
|
|
|
- *
|
|
|
- * **举例3:**求数组元素的最大值
|
|
|
- *
|
|
|
- * 第一季度 每一个月的销售额 分别是 12,14,24,
|
|
|
- * 第二季度 每一个月的销售额 分别是 23,18,35,
|
|
|
- * 第二季度 每一个月的销售额 分别是 33,48,25,
|
|
|
- * 第二季度 每一个月的销售额 分别是 27,28,35,
|
|
|
- * 二维数组实现
|
|
|
- *求出 每个月的平均销售额,和总销售额
|
|
|
- */
|
|
|
-
|
|
|
- /**
|
|
|
- * 数组中常见简单算法
|
|
|
- * 1、数组元素的反转
|
|
|
- * 2、数组的复制
|
|
|
- * 3、二分查找
|
|
|
- * 4、冒泡排序
|
|
|
- */
|
|
|
-
|
|
|
- @Test
|
|
|
- public void t14(){
|
|
|
- // 二分查找 数组必须是有序的
|
|
|
- int[] arr = new int[]{1,2,3,4,5,6};
|
|
|
- int value = 15;
|
|
|
- int head = 0;
|
|
|
- boolean flag = true;
|
|
|
- int end = arr.length-1;
|
|
|
- while (head<=end){
|
|
|
- int mid = (head + end) / 2;
|
|
|
- if(arr[mid] == value){
|
|
|
- System.out.println(mid);
|
|
|
- flag = false;
|
|
|
- break;
|
|
|
- }else if (arr[mid] > value){
|
|
|
- end = mid -1;
|
|
|
- }else {
|
|
|
- head = mid +1;
|
|
|
- }
|
|
|
- }
|
|
|
- if(flag){
|
|
|
- System.out.println("没找到");
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void t13(){
|
|
|
- //数组的复制
|
|
|
- int[] arr = new int[]{1,2,3,4,5,6};
|
|
|
- int[] arr1 = new int[arr.length];
|
|
|
- for (int i= 0;i<arr.length;i++){
|
|
|
- arr1[i] = arr[i];
|
|
|
- }
|
|
|
- System.out.println(Arrays.toString(arr1));
|
|
|
- }
|
|
|
- @Test
|
|
|
- public void t12(){
|
|
|
- // 数组元素的反转
|
|
|
- int[] arr = new int[]{1,2,3,4,5,6};
|
|
|
- for (int left =0,right = arr.length-1;left<right;left++,right-- ){
|
|
|
- int temp = arr[left];
|
|
|
- arr[left] = arr[right];
|
|
|
- arr[right] = temp;
|
|
|
- }
|
|
|
- System.out.println(Arrays.toString(arr));
|
|
|
- }
|
|
|
- @Test
|
|
|
- public void t8(){
|
|
|
- //定义方式
|
|
|
- int[] arr = {1,2,3,6};
|
|
|
- System.out.println(arr.toString());// c语言arr[0] 错误的
|
|
|
- // [1, 2, 3, 6]
|
|
|
- System.out.println(Arrays.toString(arr));
|
|
|
-
|
|
|
- System.out.println(arr[2]);
|
|
|
-
|
|
|
- int arr1[] = {1,2,3,6};
|
|
|
- for (int i = 0;i<arr1.length;i++){
|
|
|
- System.out.println(arr1[i]);
|
|
|
- }
|
|
|
- int[] arr2 = new int[]{};
|
|
|
- int[] arr3 = new int[5];
|
|
|
- int[] arr6 = new int[5];
|
|
|
- /**
|
|
|
- * 两个相同数组中的引用
|
|
|
- * ”引用”指的是地址吗
|
|
|
- *
|
|
|
- */
|
|
|
- int[] arr4;
|
|
|
- arr4 = new int[7];
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 求数组元素的最大值
|
|
|
- */
|
|
|
- @Test
|
|
|
- public void t9(){
|
|
|
- int[] arr = new int[]{2,3,46,8,9,2,6543,2,3456,78,7654,3};
|
|
|
- //寻找最大值 假设第一个元素就是最大值
|
|
|
- int max = arr[0];
|
|
|
- for (int i= 1;i<arr.length;i++){
|
|
|
- if(arr[i] > max){
|
|
|
- max = arr[i];
|
|
|
- }
|
|
|
- }
|
|
|
- System.out.println(max);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 当前二维数组
|
|
|
- * 数组的数组
|
|
|
- * [一维数组 , 一维数组 , 一维数组]
|
|
|
- */
|
|
|
- @Test
|
|
|
- public void t10(){
|
|
|
- int[][] arr = {{1,23,4},{2,3,4},{1,1,1}};
|
|
|
- // 获取 23数据 arr[0][1] arr[1][2]
|
|
|
- System.out.println(arr);
|
|
|
- System.out.println(arr[1]);
|
|
|
- // 遍历arr数组
|
|
|
- for (int i = 0;i<arr.length;i++){
|
|
|
- for (int j = 0;j<arr[i].length;j++){
|
|
|
- System.out.println(arr[i][j]);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- int[][] arr1 = new int[][]{};
|
|
|
-
|
|
|
- /**
|
|
|
- * 2:二维数组的长度
|
|
|
- * 3:二维数组中元素(一维数组)的长度
|
|
|
- */
|
|
|
- int[][] arr2 = new int[2][3];
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- @Test
|
|
|
- public void t11(){
|
|
|
- /**
|
|
|
- * 第一季度 每一个月的销售额 分别是 12,14,24,
|
|
|
- * 第二季度 每一个月的销售额 分别是 23,18,35,
|
|
|
- * 第二季度 每一个月的销售额 分别是 33,48,25,
|
|
|
- * 第二季度 每一个月的销售额 分别是 27,28,35,
|
|
|
- * 二维数组实现
|
|
|
- * 求出 每个月的平均销售额,和总销售额
|
|
|
- */
|
|
|
- int[][] arr = {{12,14,24},{23,18,35},{33,48,25},{27,28,35} };
|
|
|
- int sum = 0;
|
|
|
- int count = 0;
|
|
|
- for (int i = 0;i<arr.length;i++){
|
|
|
- for (int j = 0;j<arr[i].length;j++){
|
|
|
- sum +=arr[i][j];
|
|
|
- count++;
|
|
|
- }
|
|
|
- }
|
|
|
- System.out.println(sum);
|
|
|
- System.out.println(sum*1.0/count);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 冒泡排序
|
|
|
- */
|
|
|
- @Test
|
|
|
- public void t15(){
|
|
|
- int[] arr = new int[]{2,34,25,8,3,5,3};
|
|
|
- for (int i = 1;i<arr.length;i++){
|
|
|
- for (int j = 0;j<arr.length-i;j++){
|
|
|
- if(arr[j] >arr[j+1]){
|
|
|
- //交换
|
|
|
- int temp = arr[j];
|
|
|
- arr[j] = arr[j+1];
|
|
|
- arr[j+1] = temp;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- System.out.println(Arrays.toString(arr));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 4、随机生成一组验证码
|
|
|
- * 10、找出出现奇数次的数
|
|
|
- * 3、统计字符出现次数
|
|
|
- */
|
|
|
- @Test
|
|
|
- public void t16(){
|
|
|
- /**
|
|
|
- * 随机生成一组验证码,验证码由大小写字母和10个阿拉伯数字字符中的任意6位组成。
|
|
|
- */
|
|
|
- char[] chars = new char[62];
|
|
|
- // 数字 大写 小写
|
|
|
- for (int i = 0;i<26;i++){
|
|
|
- chars[i] = (char) ('a'+i);
|
|
|
- chars[26+i] = (char) ('A'+i);
|
|
|
- }
|
|
|
- for (int i = 0;i<10;i++){
|
|
|
- chars[52+i] = (char)('0'+i) ;
|
|
|
- }
|
|
|
-
|
|
|
-// System.out.println(Arrays.toString(chars));
|
|
|
- String code = "";
|
|
|
- for (int i = 0;i<6;i++){
|
|
|
- int index = (int) (Math.random()* chars.length);
|
|
|
- code += chars[index];
|
|
|
- }
|
|
|
- System.out.println(code);
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void t17(){
|
|
|
- // 10、找出出现奇数次的数
|
|
|
- /**
|
|
|
- * 开发提示:
|
|
|
- * 因为对于任意一个数k,有k ^ k = 0,k ^ 0 = k,所以将arr中所有元素进行异或,那么个数为偶数的元素异或后都变
|
|
|
- * 成了0,只留下了个数为奇数的那个元素。
|
|
|
- */
|
|
|
- int[] arr = {1,1,1,1,2,2,2,3,3,3,3};
|
|
|
- int num = arr[0];
|
|
|
- for (int i = 1;i<arr.length;i++){
|
|
|
- num ^= arr[i];
|
|
|
- }
|
|
|
- System.out.println(num);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- @Test
|
|
|
- public void t18(){
|
|
|
- /**
|
|
|
- * 3、统计字符出现次数
|
|
|
- * 英语中最长的单词是"pneumonoultramicroscopicsilicovolcanoconiosis",意思是“肺尘病,矽肺病”,
|
|
|
- * 一共有45个英文
|
|
|
- * 字母。现在要求统计这个单词中出现了哪些字母,以及它们出现的次数,并且找出出现次数最多的字母。
|
|
|
- * 开发提示:
|
|
|
- * (1)使用String类型的变量words存储英语单词
|
|
|
- * "pneumonoultramicroscopicsilicovolcanoconiosis"
|
|
|
- * (2)通过word.toCharArray()可以根据字符串word得到一个char[]类型的数组
|
|
|
- * 其中toCharArray()是String类型提供的系统函数,就像Math.random()等函数一样,
|
|
|
- * 后面会学到,这里先提前用一
|
|
|
- * 下。它的作用就是创建一个char[]数组,并把字符串中的每一个字符依次存储到这个char[]数组中
|
|
|
- */
|
|
|
- char[] chars = "pneumonoultramicroscopicsilicovolcanoconiosis".toCharArray();
|
|
|
- int[] arr = new int[26];
|
|
|
- for (int i= 0;i< chars.length;i++){
|
|
|
- arr[chars[i]-97]++;
|
|
|
- }
|
|
|
- // 假设一个最大值
|
|
|
- int max = arr[0];
|
|
|
- for (int i= 0;i<arr.length;i++){
|
|
|
- if (arr[i] > max) {
|
|
|
- max = arr[i];
|
|
|
- }
|
|
|
- }
|
|
|
- // 输出字符和次数
|
|
|
- for (int i = 0;i<arr.length;i++){
|
|
|
- if(arr[i] != 0){
|
|
|
- System.out.println("当前字符"+(char) (i+97)+"出现的次数"+arr[i]);
|
|
|
- }
|
|
|
- }
|
|
|
- //出现字母次数最多 + 字符
|
|
|
- for (int i= 0;i<arr.length;i++){
|
|
|
- if(max == arr[i]){
|
|
|
- System.out.println((char) (i+97));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|