Java基础练习七(二维数组)

1. 翻转数组

设存在以下数组,请正常方法输出:

char[][] chunxiao = {{ '春' , '眠' , '不' , '觉' , '晓' } ,{ '处' , '处' , '闻' , '啼' , '鸟' } ,{ '夜' , '来' , '风' , '雨' , '声' } ,{ '花' , '落' , '知' , '多' , '少' }
};
public class Work0901 {public static void main(String[] args) {char[][] chunxiao = {{ '春' , '眠' , '不' , '觉' , '晓' } ,{ '处' , '处' , '闻' , '啼' , '鸟' } ,{ '夜' , '来' , '风' , '雨' , '声' } ,{ '花' , '落' , '知' , '多' , '少' }};for (int i = 0; i < chunxiao.length; i++) {for (int j = 0; j < chunxiao[i].length; j++) {System.out.printf(String.valueOf(chunxiao[i][j]) + '\t');}System.out.println();}}
}

尝试设计一组循环语句,将以上形式的输出结果翻转为以下形式(旋转 90 度)

public class Work0901 {public static void main(String[] args) {char[][] chunxiao = {{ '春' , '眠' , '不' , '觉' , '晓' } ,{ '处' , '处' , '闻' , '啼' , '鸟' } ,{ '夜' , '来' , '风' , '雨' , '声' } ,{ '花' , '落' , '知' , '多' , '少' }};for (int i = 0; i < chunxiao[0].length; i++) {for (int j = chunxiao.length - 1; j >= 0; j--) {System.out.printf(String.valueOf(chunxiao[j][i]) + '\t');}System.out.println();}}
}

思考: 如果是一首词该如何旋转输出:
十年生死两茫茫,不思量,自难忘。
千里孤坟,无处话凄凉。
纵使相逢应不识,尘满面,鬓如霜。
夜来幽梦忽还乡,小轩窗,正梳妆。
相顾无言,惟有泪千行。
料得年年肠断处,明月夜,短松冈。

public class Work090103 {public static void main(String[] args) {char[][] poetry = {{'十', '年', '生', '死', '两', '茫', '茫', ',', '不', '思', '量', ',', '自', '难', '忘', '。'},{'千', '里', '孤', '坟', ',', '无', '处', '话', '凄', '凉', '。'},{'纵', '使', '相', '逢', '应', '不', '识', ',', '尘', '满', '面', ',', '鬓', '如', '霜', '。'},{'夜', '来', '幽', '梦', '忽', '还', '乡', ',', '小', '轩', '窗', ',', '正', '梳', '妆', '。'},{'相', '顾', '无', '言', ',', '惟', '有', '泪', '千', '行', '。'},{'料', '得', '年', '年', '肠', '断', '处', ',', '明', '月', '夜', ',', '短', '松', '冈', '。'}};// 获取最长的一句词String longestPoetry = Arrays.stream(poetry)  // 将字符数组转换为流.map(String::new)  // 将字符数组转换为字符串.max((s1, s2) -> s1.length() - s2.length())  // 比较字符串长度.orElse("");  // 如果数组为空,则返回空字符串System.out.println("最长的句子是:" + longestPoetry.length());char[][] newPoeter = new char[poetry.length][longestPoetry.length()];for (int i = 0; i < poetry.length; i++) {System.arraycopy(poetry[i],0,newPoeter[i],0,poetry[i].length);if (poetry[i].length < newPoeter[i].length) {Arrays.fill(newPoeter[i], poetry[i].length, newPoeter[i].length, ' ');}}
//        for (char[] i: newPoeter) {
//            System.out.println(Arrays.toString(i));
//        }for (int i = 0; i < newPoeter[0].length; i++) {for (int j = newPoeter.length - 1; j >= 0; j--) {System.out.printf(String.valueOf(newPoeter[j][i]) + '\t');}System.out.println();}}
}

2. 数组排序

设存在以下数组:

// 设 names 数组中存放学生姓名
String[] names = { "安琪拉" , "王昭君" , "蔡文姬" , "妲己" , "张良" };// 设 courses 数组中依次存放三门课程的名称
String[] courses = { "C++" , "Java" , "Python" };
// 设 scores 数组中依次存储的是 names 数组中各个学生的 C++ 、Java 、Python 课程的成绩
int[][] scores = {{ 90 , 89 , 75 } ,{ 59 , 40 , 100 } ,{ 100 , 99 , 80 } ,{ 80 , 61 , 61 } ,{ 60 , 100 , 99 } 
};

采用以下程序可以输出每个学生的姓名以及该学生各门课程的成绩:

for( int i = 0 ; i < scores.length ; i++ ){System.out.print( names[ i ] + " => " ); // 输出学生姓名for( int j = 0 ; j < scores[ i ] .length ; j++ ){System.out.print( courses[ j ] + ":");// 输出课程名称System.out.print( scores[ i ][ j ] ); // 输出课程成绩if( j < scores[ i ] .length - 1 ) {System.out.print( " , " );}}System.out.println();
}

设计程序按照各个学生的 Java 成绩进行排序 ( 降序 )

ublic class Work090201 {public static void main(String[] args) {// 设 names 数组中存放学生姓名String[] names = { "安琪拉" , "王昭君" , "蔡文姬" , "妲己" , "张良" };// 设 courses 数组中依次存放三门课程的名称String[] courses = { "C++" , "Java" , "Python" };// 设 scores 数组中依次存储的是 names 数组中各个学生的 C++ 、Java 、Python 课程的成绩int[][] scores = {{ 90 , 89 , 75 } ,{ 59 , 40 , 100 } ,{ 100 , 99 , 80 } ,{ 80 , 61 , 61 } ,{ 60 , 100 , 99 }};// 选择排序,按照Java成绩for (int i = 0; i < scores.length - 1; i++) {int max = i;for (int j = i + 1; j < scores.length; j++) {if (scores[j][1] > scores[max][1]) {max = j;}}int[] temp = scores[i];scores[i] = scores[max];scores[max] = temp;}for (int[] i: scores) {System.out.println(Arrays.toString(i));}}
}

设计程序,根据学生总成绩进行排序(降序排列),并输出学生姓名、每门课程的名称和该学生的成绩、该学生的总成绩

public class Work090202 {public static void main(String[] args) {// 设 names 数组中存放学生姓名String[] names = { "安琪拉" , "王昭君" , "蔡文姬" , "妲己" , "张良" };// 设 courses 数组中依次存放三门课程的名称String[] courses = { "C++" , "Java" , "Python" };// 设 scores 数组中依次存储的是 names 数组中各个学生的 C++ 、Java 、Python 课程的成绩int[][] scores = {{ 90 , 89 , 75 } ,{ 59 , 40 , 100 } ,{ 100 , 99 , 80 } ,{ 80 , 61 , 61 } ,{ 60 , 100 , 99 }};int[][] sum = new int[scores.length][2];for (int i = 0; i < scores.length; i++){sum[i][0] = Arrays.stream(scores[i]).sum();sum[i][1] = i;}// 插入排序,按照总成绩for (int i = 1; i < sum.length; i++) {int index = i - 1;int[] num = sum[i];while (index >= 0 && sum[index][0] < num[0]) {sum[index + 1] = sum[index];index--;}sum[index+1] = num;}for (int[] i: sum) {System.out.println(names[i[1]]+'\t' + courses[0]+scores[i[1]][0] +'\t'+ courses[1]+scores[i[1]][1] +'\t'+ courses[2]+scores[i[1]][2] +'\t'+ i[0]);}}
}

3. 杨辉三角

编写一个程序,生成一个给定行数的杨辉三角

import java.util.Arrays;
import java.util.Scanner;public class Work0903 {public static void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();int[][] triangle = new int[n][];for (int i = 0; i < n; i++) {if (i == 0) {triangle[i] = new int[]{1};} else if (i == 1) {triangle[i] = new int[]{1, 1};} else {triangle[i] = new int[i + 1];for (int j = 1; j < i; j++) {triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];}triangle[i][0] = 1;triangle[i][i] = 1;}}for (int[] i:triangle) {System.out.println(Arrays.toString(i));}}
}

4. 复制数组【拓展】

有如下数组 nums ,请通过删除掉其中的 33 ,得到一个新的数组 newNums

int[] nums = {2, 11, 33, 44, 55, 66, 277}
//newNums = {2, 11, 44,55, 66, 277}
  • for 循环
public class Work0904 {public static void main(String[] args) {// 有如下数组 nums ,请通过删除掉其中的 33 ,得到一个新的数组 newNumsint[] nums = {2, 11, 33, 44, 55, 66, 277};int[] newNums = new int[nums.length - 1];int count = 0;for (int i = 0; i < nums.length; i++) {if (nums[i] != 33) {newNums[count] = nums[i];count++;}}System.out.println(Arrays.toString(newNums));}
}
  • System 类中的 arraycopy 方法实现
public class Work0904 {public static void main(String[] args) {// 有如下数组 nums ,请通过删除掉其中的 33 ,得到一个新的数组 newNumsint[] nums = {2, 11, 33, 44, 55, 66, 277};int[] newNums2 = new int[nums.length - 1];System.arraycopy(nums,0,newNums2,0,2);System.arraycopy(nums,3,newNums2,2,4);System.out.println(Arrays.toString(newNums2));}
}

System.arraycopy()方法接受五个参数:

  • 源数组:要复制的数组。
  • 源数组起始位置:要复制的起始索引。
  • 目标数组:要将元素复制到的数组。
  • 目标数组起始位置:要复制到的起始索引。
  • 要复制的元素个数:要复制的元素数量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/30686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kali Hyper-V安装正常启动后 黑屏 只能进命令模式

问题: Hyper-V安装虚拟机Kali系统一切安装正常, 没有出现错误. 安装成功后重启,只能进入命令模式,tt1-tt6,进不去GUI桌面. 尝试: 一代二代虚拟硬盘都试过,同样问题,只能开进后进入命令模式,在命令模式下一切运行正常, 也修复过系统 GNOM等的,不管用. 以下为国外论坛给的建议,尝…

Centos7单机部署ElasticSearch

Centos7单机部署ElasticSearch 引言 Elasticsearch是一种广泛使用的开源搜索引擎&#xff0c;专门为分布式环境设计&#xff0c;但也可以在单机上运行。它使存储、搜索和分析大量数据变得更加容易和高效。此教程将引导你通过在Centos7上单机部署Elasticsearch&#xff0c;涵盖…

flutter项目给安卓打正式包 和升级版本号

1.首先把flutter项目里的android目录整个拖进android studo里,运行一下看看是否能运行 2.Build->Generate Signed Bundle/APK… 点击APK->Next 如果没有key酒店及Create new…就生成新的key 点击Key store path:右边的图标选择保存路径 选择保存的路径,并且在Save…

webpack基础知识二:说说webpack的构建流程?

一、运行流程 webpack 的运行流程是一个串行的过程&#xff0c;它的工作流程就是将各个插件串联起来 在运行过程中会广播事件&#xff0c;插件只需要监听它所关心的事件&#xff0c;就能加入到这条webpack机制中&#xff0c;去改变webpack的运作&#xff0c;使得整个系统扩展…

【Android NDK开发】Android Studio 编写 JNI (C++)代码无提示

随笔记 Android Studio在编写C代码时候&#xff0c;引入对应的头文件&#xff0c;Android Studio里却不提示对应的方法&#xff0c;需要在Studio中设置一下。 Mac中&#xff0c;选择 Android Studio > Preferences&#xff0c;选择Clangd >>Disable Clangd completio…

C++-排序

文章目录 常数操作时间复杂度空间复杂度O(N^2) O(1) 数据情况发生变化不影响流程 选择排序冒泡排序使用抑或运算提取出不为零的数最右边的1 1. 实现两个变量交换值2. 数组中一种数字出现奇数次,other是偶数次,找到那一种数字3. 数组中有两种数字出现奇数次,other是偶数次,找到那…

【LeetCode】1281.整数的各位积和之差

题目 给你一个整数 n&#xff0c;请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 示例 1&#xff1a; 输入&#xff1a;n 234 输出&#xff1a;15 解释&#xff1a; 各位数之积 2 * 3 * 4 24 各位数之和 2 3 4 9 结果 24 - 9 15示例 2&…

如何理解MySQL隔离性---3个记录隐藏字段、undo日志、Read View

目录 一、3个记录隐藏字段 二、undo 日志 三、read view 一、3个记录隐藏字段 本片文章是帮助理解上篇文章Mysql隔离性的辅助知识。 mysql在建表时&#xff0c;不仅仅创建了表的结构&#xff0c;还创建了3个隐藏字段。 DB_TRX_ID &#xff1a;6 byte&#xff0c;最近修改( 修…

微信抢红包操作步骤及需要安装软件的步骤

微信抢红包操作步骤&#xff1a; 打开微信&#xff0c;进入聊天窗口。 在聊天窗口中&#xff0c;如果有红包消息会显示“红包”字样&#xff0c;点击这条消息。 在红包界面&#xff0c;点击“抢红包”按钮。 如果是口令红包&#xff0c;需要输入正确的口令才能打开红包。 打开红…

iOS开发-JsonModel的学习及使用

IOS JsonModel的学习及使用 当我们从服务端获取到json数据后的时候&#xff0c;我们需要在界面上展示或者保存起来&#xff0c;下面来看下直接通过NSDictionary取出数据的情况。 NSDictionary直接取出数据的诟病。 NSString *name [self.responseObj objectForKey:"nam…

巧用Maya轴心操作技巧,让工作事半功倍!

Maya 是一款专业的三维软件&#xff0c;可以用于创建规模宏大的世界、复杂的角色和炫酷的特效。Maya的用户遍布动画行业、影视特效、广告和片头、平面设计行业&#xff0c;用户数量十分庞大。本文分享了maya轴心操作的小技巧&#xff0c;让设计师工作事半功倍&#xff0c;一起来…

一分钟了解自动化测试

目前自动化测试并不属于新鲜的事物&#xff0c;或者说自动化测试的各种方法论已经层出不穷&#xff0c;但是&#xff0c;能够明白自动化测试并很好落地实施的团队还不是非常多&#xff0c;我们接来下用通俗的方式来介绍自动化测试…… 首先我们从招聘岗位需求说起。看近期的职…

基于Java+SpringBoot制作一个社区宠物登记小程序

制作一个社区宠物登记小程序,帮助社区居民登记和管理他们的宠物信息,以便更好地跟踪和维护社区中的宠物状况,通过社区宠物信息登记系统,社区居民可以更好地管理自己的宠物信息,并与其他宠物所有者共享资源和信息。这将有助于提高社区宠物的福利和安全,促进社区成员之间的…

班级事务管理系统设计与实现

班级事务管理系统 后端采用Spring Boot开发。 cloud分支版本正在开发中&#xff0c;后端采用Spring Cloud进行改造。 系统架构 项目采用B/S架构&#xff0c;前后端通讯采用RESTful API&#xff0c;数据格式使用Json&#xff0c;认证Token格式采用JWT。 身份认证使用Spring …

【Essential C++课后练习】纯代码(更新中)

文章目录 第一章 C编程基础1.41.51.61.71.8 第二章 面向过程的编程风格2.12.22.32.42.52.6 第一章 C编程基础 1.4 /*********************************************************************说明:试着扩充这个程序的内容&#xff1a;&#xff08;1&#xff09;要求用户同时输…

jmeter性能测试常见的一些问题

一、request 请求超时设置 timeout 超时时间是可以手动设置的&#xff0c;新建一个 http 请求&#xff0c;在“高级”设置中找到“超时”设置&#xff0c;设置连接、响应时间为2000ms。 1. 请求连接超时&#xff0c;连不上服务器。 现象&#xff1a; Jmeter表现形式为&#xff…

Centos Linux带进度条复制(同步)文件和文件夹

centos linux 内建文件复制/备份命令 rsync 目的&#xff1a;我想从一个磁盘复制一堆文件到另一个磁盘&#xff0c;不希望改变文件的属性&#xff08;尤其是所有者、还有创建时间、修改时间&#xff09;&#xff0c;最好还得能给我显示进度条。文件太多了&#xff0c;好几百GB…

安防监控视频汇聚EasyCVR平台的FLV视频流在VLC中无法播放的原因排查

众所周知&#xff0c;TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入&#xff0c;包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上&#xff0c;视频监控…

Mac 安装不在 Apple 商店授权的应用程序

文章目录 一、场景介绍二、实操说明 一、场景介绍 在日常的工作生活中&#xff0c;发现一些好用的应用程序&#xff0c;但是出于某些原因&#xff0c;应用程序的开发者并没有将安装包上架到苹果商店。 那么这些优秀的应用程序下载安装以后就会出现如下弹框被拒之门外 二、实操…

背上花里胡哨的书包准备run之webpack篇(+一些常问的面试题)

webpack理解&#xff1f; Webpack 是一个现代的静态模块打包工具。它是一个基于配置的构建工具&#xff0c;用于将多个模块&#xff08;包括 JavaScript、样式表、图像等&#xff09;打包成一个或多个 bundle&#xff0c;并提供了一种优化资源加载和管理的方式。 主要概念和工…