java笔记(编程练习题)

Demo82

`import java.util.Scanner; public class Demo82 {
public static void main(String[] args) {
 //输入数字1~100 
 int[] arr = new int[101];//0 1~100 
 Scanner input = new Scanner(System.in);
  System.out.print("Enter numbers:");
   while (true) { 
   int num = input.nextInt(); 
   if (num == 0) {
    break;
     }
     arr[num]++; 
     }
for (int i = 1; i < arr.length; i++) {
 if (arr[i] != 0) {
  if (arr[i] == 1) {
   System.out.println(i + " occurs " + arr[i] + " time");
    } else {
    System.out.println(i + " occurs " + arr[i] + " times");
     }
      }
       }
        }
         }`
     Demo83
         import java.util.*; public class Demo83 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter 10 numbes:"); /*思路1:动态扩容数组*/ /*int[] arr = new int[0];
for (int i = 0; i < 10; i++) { int num = input.nextInt(); if (!contains(arr,num)) { arr = add(arr,num); } }System.out.println(Arrays.toString(arr)); *//*思路2:固定数组长度 用标记表示有效数据 */ int[] arr = new int[10]; int size = 0; //表示有效数据的个数 和新元素进入的角标
for (int i = 0; i < 10; i++) { int num = input.nextInt(); if (!contains(arr,num,size)) { arr[size++] = num; } }System.out.println(toString(arr,size)); }public static String toString(int[] arr,int size) { if (size == 0) {
return "[]"; }String s = "[";
for (int i = 0; i < size; i++) { if (i == size - 1) { s += arr[i] + "]"; } else { s += arr[i] + ", "; } }return s; }public static boolean contains(int[] arr, int num,int size) {
for (int i = 0; i < size; i++) { if (arr[i] == num) { return true; } }return false; }public static int[] add(int[] arr, int num) { int[] newArr = new int[arr.length + 1];
for (int i = 0; i < arr.length; i++) { newArr[i] = arr[i]; }newArr[newArr.length - 1] = num; return newArr; }public static boolean contains(int[] arr, int num) {
for (int i = 0; i < arr.length; i++) { if (arr[i] == num) { return true; } }return false; } } Demo85 public class Demo85 { public static void main(String[] args) { System.out.println(gcd(35,40,55,30,25)); System.out.println(gcd(28,16)); }public static int gcd(int ... numbers) { int min = getMin(numbers);
for (int i = min; i >= 1; i--) { boolean flag = true;
for (int j = 0; j < numbers.length; j++) { if (numbers[j] % i != 0) {
flag = false; break; } }if (flag) {
return i; } }return 1; }public static int getMin(int[] numbers) { int min = numbers[0];
for (int i = 1; i < numbers.length; i++) { if (numbers[i] < min) { min = numbers[i]; } }return min; } }
         
Demo88

```java
import java.util.*; public class Demo88 { public static void main(String[] args) { Scanner input = new Scanner(System.in); Random random = new Random(); System.out.print("请输入球的个数:"); int balls = input.nextInt(); System.out.print("请输入槽子的个数:"); int slots = input.nextInt(); int[] temp = new int[slots]; //槽子的数组 //路径的个数 String[] paths = new String[balls];
for (int i = 0; i < paths.length; i++) { String path = ""; int rCount = 0; //拼接每一个路径
for (int j = 0; j < slots - 1; j++) { if (random.nextInt(2) == 0) { path += "L"; } else { path += "R"; rCount++; } }paths[i] = path; System.out.println(path); temp[rCount]++; }System.out.println(Arrays.toString(temp)); } } Demo90 import java.util.*; public class Demo90 { public static void main(String[] args) {
Scanner input = new Scanner(System.in); System.out.print("请输入数字的个数:"); int len = input.nextInt(); int[] arr = new int[len]; System.out.print("请输入数字:");
for (int i = 0; i < arr.length; i++) { arr[i] = input.nextInt(); }
for (int i = 0; i < arr.length - 3;) { int count = 1; int j = 0;
for ( j = i + 1; j < arr.length; j++) { if (arr[j] == arr[i]) { count++; } else { break; } }if (count >= 4) { System.out.println("有!"); return; } else { i = j; } }System.out.println("没有!"); } } Demo91 import java.util.*; public class Demo91 { public static void main(String[] args) { int[] arr1 = {1,3,5,7,9}; int[] arr2 = {2,4,6,8,10}; int[] arr3 = merge(arr1,arr2); System.out.println(Arrays.toString(arr3)); }public static int[] merge(int[] arr1,int[] arr2) { int[] arr3 = new int[arr1.length + arr2.length]; int p1 = 0; int p2 = 0; int p3 = 0; while (p1 < arr1.length || p2 < arr2.length) { if (p1 < arr1.length && p2 >= arr2.length) { arr3[p3++] = arr1[p1++]; } else if (p1 >= arr1.length && p2 < arr2.length) { arr3[p3++] = arr2[p2++]; } else if (arr1[p1] < arr2[p2]) { arr3[p3++] = arr1[p1++]; } else { arr3[p3++] = arr2[p2++]; } }return arr3;
} }

Demo92

import java.util.*; public class Demo92 { public static void main(String[] args) { Scanner input = new Scanner(System.in); Random random = new Random(); String[] words = {"banana","orange","python","apple","computer"}; while (true) { //1.随机抽取一个单词 String word = words[random.nextInt(words.length)]; //2.创建该单词的状态数组 boolean[] statues = new boolean[word.length()]; int missed = 0; //错误的次数 //开始下一个字母的输入 while (!isOver(statues)) { //3.按照状态数组获取提示的密文 String password = getPassword(word,statues); //4.提示用户输入一个字母 System.out.print("Enter a letter " + password + ":" ); String letter = input.nextLine(); //5.判断这个字母是否出现在字符串中 if (word.contains(letter)) { //6.改变字母的状态 if (!changeStatues(word,letter,statues)) { System.out.println("\t" + letter + " is alreay in the word"); } } else { System.out.println("\t" + letter + " is not in the word"); missed++; } }System.out.println("The word is " + word + ". You missed " + missed); System.out.print("Do you again?(y/n)"); String choice = input.nextLine(); if (choice.equals("n")) { break; } } }public static boolean changeStatues(String word,String letter,boolean[] statues) { //"a" -> 'a' char ch = letter.charAt(0);
for (int i = 0; i < word.length(); i++) { if (word.charAt(i) == ch) { if (statues[i]) { //如果字符所在的角标i对应的状态已经是true 表示此次没有改变成 功-重复输入的字符 return false; } else { statues[i] = true; }
} }return true; }public static boolean isOver(boolean[] statues) {
for (int i = 0; i < statues.length; i++) { if (!statues[i]) { return false; } }return true; }public static String getPassword(String word,boolean[] statues) { String password = "";
for (int i = 0; i < statues.length; i++) { if (statues[i]) { password += word.charAt(i); } else { password += "*"; } }return password; } }

Demo101
在这里插入图片描述

`import java.util.Scanner; public class Demo101 { //1.创建一个棋盘 public static String[][] board = new String[15][15]; //玩家轮流计数 public static int player = 0; //黑棋和白棋 public static String BLACK_CHESS = "O"; public static String WHITE_CHESS = "X"; public static Scanner input = new Scanner(System.in); public static void main(String[] args) { //2.给棋盘的每一个元素要赋值+ initBoard(); printBoard(); //3.开始下棋 startGame(); }public static void startGame() { while (!isGameOver()) { if (player % 2 == 0) { //黑方下棋 System.out.println(">>>请黑方下棋"); playChess(BLACK_CHESS); } else { //白方下棋 System.out.println(">>>请白方下棋"); playChess(WHITE_CHESS); }player++; }if (player == 15 * 15) { System.out.println(">>>和棋,游戏结束!"); } else { if ((player - 1) % 2 == 0) { System.out.println(">>>黑胜!游戏结束!"); } else { System.out.println(">>>白胜!游戏结束!"); } }
}public static boolean isGameOver() {
for (int row = 0; row < board.length; row++) {
for (int col = 0; col < board[row].length; col++) { if (!board[row][col].equals("+")) { //向右 if (col < 11) { boolean flag = true;
for (int c = col + 1; c <= col + 4; c++) { if (!board[row][col].equals(board[row][c])) {
flag = false; break; } }if (flag) { return true; } }//向下 if (row < 11) { boolean flag = true;
for (int r = row + 1; r <= row + 4; r++) { if (!board[row][col].equals(board[r][col])) {
flag = false; break; } }if (flag) { return true; } }//向右上 if (row > 3 && col < 11) { boolean flag = true;
for (int r = row - 1 , c = col + 1; c <= col + 4; r-- , c++) { if (!board[row][col].equals(board[r][c])) {
flag = false; break; } }if (flag) { return true; } }//向右下 if (row < 11 && col < 11) { boolean flag = true;
for (int r = row + 1 , c = col + 1; c <= col + 4; r++ , c++) { if (!board[row][col].equals(board[r][c])) {
flag = false; break; } }if (flag) { return true; } }
} } }if (player == 15 *15) { return true; }return false; }public static void playChess(String chess) { System.out.print(">>>请输入棋子坐标:"); int x = input.nextInt() - 1; int y = input.nextInt() - 1; if (!board[x][y].equals("+")) { System.out.println(">>>此处已有棋子,请重新下棋!"); player--; return; }board[x][y] = chess; printBoard(); }public static void printBoard() { System.out.print(" ");
for (int i = 1; i <= board[0].length; i++) { System.out.printf("%-2d",i); }System.out.println();
for (int i = 0; i < board.length; i++) { System.out.printf("%2d ",i + 1);
for (int j = 0; j < board[i].length; j++) { System.out.print(board[i][j] + " "); }System.out.println(); } }public static void initBoard() {
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) { board[i][j] = "+"; } } } }`

补充:八皇后问题
在这里插入图片描述

`public class NQueen{ public static int N = 8; public static int[][] board = new int[N][N]; public static int count = 0; public static void main(String[] args) { nqueen(0); }public static void nqueen(int row) { if (row == N) { count++; System.out.printf("这是第%d种解法:\n",count);
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) { System.out.print(board[i][j] + " "); }System.out.println(); } } else {
for (int col = 0; col < N; col++) { if (!isDangerous(row,col)) {
for (int c = 0; c < N; c++) { board[row][c] = 0; }board[row][col] = 1; nqueen(row + 1); } } } }public static boolean isDangerous(int row ,int col) { //向上
for (int r = row - 1;r >= 0; r--) { if (board[r][col] == 1) { return true; } }//向左上
for (int r = row - 1,c = col - 1; r >= 0 && c >= 0;r--,c--) { if (board[r][c] == 1) { return true;
课后作业
Demo84 Demo86 Demo87 Demo89 Demo94 Demo95 Demo98 Demo99 Demo102 Demo103 Demo104 Demo105 6.5 LeetCode选讲 LeetCode66} }//向右上
for (int r = row - 1,c = col + 1; r >= 0 && c < N; r--,c++) { if (board[r][c] == 1) { return true; } }return false; } }`

6.5 LeetCode选讲

LeetCode66

import java.util.*; class Solution { public int[] plusOne(int[] digits) { int carry = 1; //最开始的进位 给个位加的
for (int i = digits.length - 1; i >= 0; i--) { int num = digits[i] + carry; digits[i] = num % 10; carry = num / 10; if (carry == 0) { break; } }if (carry == 1) { int[] arr = new int[digits.length + 1]; arr[0] = 1; return arr; }return digits; }/* 升级版 [3,7,6] [4,5,6] 8 3 2 [3,7,6]
[9,5,6] 1 3 3 2[1,2,3] [8,9,8,8,7] 9 0 0 1 0 [1,2,3] [9,9,8,8,7] 1 0 0 0 1 0 */public int[] plus(int[] digits1 , int[] digits2) { if (digits1.length < digits2.length) { digits1 = kuorong(digits1,digits2.length); } else if (digits1.length > digits2.length){ digits2 = kuorong(digits2,digits1.length); }int carry = 0;
for (int i = digits1.length - 1; i >= 0; i--) { int num = digits1[i] + digits2[i] + carry; carry = num / 10; digits1[i] = num % 10; }if (carry == 1) { int[] digits3 = new int[digits1.length + 1]; digits3[0] = 1;
for (int i = 0; i < digits1.length; i++) { digits3[i + 1] = digits1[i]; }return digits3; }return digits1; }public int[] kuorong(int[] arr, int newLen) { //arr 1 2 3 // i //nrr 0 0 1 2 3 // k int[] newArr = new int[newLen]; int i = arr.length - 1; int k = newArr.length - 1; while (i >= 0) { newArr[k--] = arr[i--]; }return newArr; }public static void main(String[] args) { Solution s = new Solution(); int[] arr1 = {1,2,3}; int[] arr2 = {9,8,7}; int[] arr3 = s.plus(arr1,arr2); System.out.println(Arrays.toString(arr3)); } }

LeetCode283

import java.util.*; class Solution { public int majorityElement(int[] nums) { //思路1:插入排序做 排序之后中间的位置一定是众数 /*
for (int i = 0; i < nums.length; i++) { int e = nums[i]; int j = 0;
for (j = i; j > 0 && nums[j - 1] > e; j--) { nums[j] = nums[j - 1]; }nums[j] = e; }return nums[nums.length / 2]; *///思路2:正负相消
int m = nums[0]; int count = 1;
for (int i = 1; i < nums.length; i++) { if (nums[i] == m) { count++; } else { count--; if (count == 0) { m = nums[i]; count = 1; } } }return m; } }

LeetCode905

import java.util.*; class Solution { public int[] sortArrayByParity(int[] A) { int l = 0; int r = A.length - 1; while (l < r) { //左奇右偶 if (A[l] % 2 == 1 && A[r] % 2 == 0) { int temp = A[l]; A[l] = A[r]; A[r] = temp; //左偶右奇 } else if (A[l] % 2 == 0 && A[r] % 2 == 1) { l++; r--; //左奇右奇 } else if (A[l] % 2 == 1 && A[r] % 2 == 1) { r--; } else { l++; } }return A; } }

LeetCode1013

class Solution { public boolean canThreePartsEqualSum(int[] arr) { int sum = 0;
for (int num : arr) { sum += num; }int key = sum / 3; int group = 0;
for (int i = 0; i < arr.length; i++) { key -= arr[i];
if (key == 0) { group++; key = sum / 3; } }return group == 3 || sum == 0 && group >= 3; } }

LeetCode724

class Solution { public int pivotIndex(int[] nums) { int sum = 0;
for (int num:nums) { sum += num; }int leftSum = 0; int rightSum = 0;
for (int i = 0; i < nums.length; i++) { if (i == 0) { leftSum = 0; } else { leftSum += nums[i - 1]; }rightSum = sum - leftSum -nums[i]; if (rightSum == leftSum) { return i; } }return -1; } }

LeetCode209

class Solution { public int minSubArrayLen(int s, int[] nums) { int len = 0; int i = 0; int sum = 0;
for (int j = 0; j < nums.length; j++) { sum += nums[j]; while (sum >= s) { len = len == 0 ? (j - i + 1) : Math.min(j - i + 1,len); sum -= nums[i]; i++; } }return len; } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
综合小区管理系统管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、车位管理、车位分配管理、出入管理、字典管理、房屋管理、物业费缴纳管理、公告管理、物业人员投诉管理、我的私信管理、物业人员管理、用户管理、管理员管理。用户的功能包括管理部门以及部门岗位信息,管理招聘信息,培训信息,薪资信息等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 综合小区管理系统管理系统可以提高综合小区管理系统信息管理问题的解决效率,优化综合小区管理系统信息处理流程,保证综合小区管理系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理综合小区管理系统信息,包括出入管理,报修管理,报修管理,物业费缴纳等,可以管理操作员。 出入管理界面,管理员在出入管理界面中可以对界面中显示,可以对招聘信息的招聘状态进行查看,可以添加新的招聘信息等。报修管理界面,管理员在报修管理界面中查看奖罚种类信息,奖罚描述信息,新增奖惩信息等。车位管理界面,管理员在车位管理界面中新增。公告管理界面,管理员在公告管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值