【Java】基础练习(七)---二维数组
1.翻转数组
设存在以下数组:
char[][] chunxiao = {{ '春' , '眠' , '不' , '觉' , '晓' } ,{ '处' , '处' , '闻' , '啼' , '鸟' } ,{ '夜' , '来' , '风' , '雨' , '声' } ,{ '花' , '落' , '知' , '多' , '少' }} ;
(1) 将其输出成如下形式:
package swp.kaifamiao.codes.Java.d0809;import java.util.Arrays;/*** {class description}** @author SWP* @version 1.0.0*/
public class Text01 {public static void main(String[] args) {//初始化一个二维数组char[][] chunxiao = {{ '春' , '眠' , '不' , '觉' , '晓' } ,{ '处' , '处' , '闻' , '啼' , '鸟' } ,{ '夜' , '来' , '风' , '雨' , '声' } ,{ '花' , '落' , '知' , '多' , '少' }} ;//定义一个字符串用来存放遍历后的值String output = "";//两个for循环遍历输出二维数组所有的值,for (int i = 0; i < chunxiao.length; i++){for (int j = 0; j < chunxiao[i].length; j++){output += chunxiao[i][j];}//每循环完一轮j,进行换行,然后进入下一个i的循环output += "\n";}//输出遍历后的字符串System.out.println(output);}
}
(2)尝试设计一组循环语句,将以上形式的输出结果翻转为以下形式(旋转 90 度):
package swp.kaifamiao.codes.Java.d0809;/*** {class description}** @author SWP* @version 1.0.0*/
public class Text02 {public static void main(String[] args) {//初始化一个二维数组char[][] chunxiao = {{ '春' , '眠' , '不' , '觉' , '晓' } ,{ '处' , '处' , '闻' , '啼' , '鸟' } ,{ '夜' , '来' , '风' , '雨' , '声' } ,{ '花' , '落' , '知' , '多' , '少' }} ;//定义一个字符串用来存放遍历后的值String output = "";for (int i = 0; i <= chunxiao.length; i++){for (int j = chunxiao.length-1; j >= 0; j--){output += chunxiao[j][i];}//每循环完一轮j,进行换行,然后进入下一个i的循环output += "\n";}System.out.println(output);}
}
思考:如果是一首词该如何旋转输出?
十年生死两茫茫,不思量,自难忘。
千里孤坟,无处话凄凉。
纵使相逢应不识,尘满面,鬓如霜。
夜来幽梦忽还乡,小轩窗,正梳妆。
相顾无言,惟有泪千行。
料得年年肠断处,明月夜,短松冈。
package swp.kaifamiao.codes.Java.d0809;/*** {class description}** @author SWP* @version 1.0.0*/
public class Demo01 {public static void main(String[] args) {char[][] poem = {{'十', '年', '生', '死', '两', '茫', '茫', '\u002C', '不', '思', '量', '\u002C', '自', '难', '忘'},{'千', '里', '孤', '坟', '\u002C', '无', '处', '话', '凄', '凉', '\u3002'},{'纵', '使', '相', '逢', '应', '不', '识', '\u002C', '尘', '满', '面', '\u002C', '鬓', '如', '霜'},{'夜', '来', '幽', '梦', '忽', '还', '乡', '\u002C', '小', '轩', '窗', '\u002C', '正', '梳', '妆'},{'相', '顾', '无', '言', ',', '惟', '有', '泪', '千', '行', '\u3002'},{'料', '得', '年', '年', '肠', '断', '处', '\u002C', '明', '月', '夜', '\u002C', '短', '松', '冈'}};//定义一个poem的最长的句子的长度为max,假定为poem[0]的长度int max = poem[0].length;//遍历出最长的句子的长度为maxfor (int i = 1; i < poem.length; i++){if (poem[i].length > max){max = poem[i].length;}}//外层循环的长度要小于等于最长句子的长度maxfor (int j = 0; j < max; j++){for (int i = poem.length - 1; i >= 0; i--) {//if ( j >= poem[i].length){//填充空格、输出空格System.out.print(" " + "\t");}else {System.out.print(poem[i][j] + "\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();
}
(1) 设计程序按照各个学生的 Java 成绩进行排序 ( 降序 )
package swp.kaifamiao.codes.Java.d0809;import java.util.Arrays;/*** {class description}** @author SWP* @version 1.0.0*/
public class Text03 {public static void main(String[] args) {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));}}
}
(2) 设计程序,根据学生总成绩进行排序(降序排列),并输出学生姓名、每门课程的名称和
该学生的成绩、该学生的总成绩
package swp.kaifamiao.codes.Java.d0809;import com.sun.tools.javac.Main;import java.util.Arrays;/*** {class description}** @author SWP* @version 1.0.0*/
public class Text04 {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[] sumscores = new int[scores.length];for (int i = 0; i < scores.length; i++){int sum = 0;for (int j = 0; j < scores[i].length; j++){sum += scores[i][j];}sumscores[i] = sum;}//对总分数数组进行排序(冒泡)//外循环for (int i = 0; i < sumscores.length - 1; i++){//内循环for (int j = 0; j <sumscores.length -1 - i; j++){if (sumscores[j] < sumscores[j+1]){//换总分的排名(倒序)int temp = sumscores[j];sumscores[j] = sumscores[j+1];sumscores[j+1] = temp;// 换各科的排名(倒序)int[] tempScore = scores[j];scores[j] = scores[j + 1];scores[j + 1] = tempScore;//换名字String tempName = names[j];names[j] = names[j + 1];names[j + 1] = tempName;}}}System.out.println(Arrays.toString(sumscores));// 遍历输出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();}}
}
3.编写一个程序,生成一个给定行数的杨辉三角
package swp.kaifamiao.codes.Java.d0809;/*** {class description}** @author SWP* @version 1.0.0*/
/*杨辉三角1 01 1 11 2 1 21 3 3 11 4 6 4 11 5 10 10 5 11. 每行元素个数是 下标 + 12. 每行第一个和最后一个是 1, 其余元素的值为其上一行的元素 + 上一行元素的前一个元素*/
import java.util.Arrays;
import java.util.Scanner;public class Text05 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入n:");int n = input.nextInt();int[][] nums = new int[n][];for (int i = 0; i < nums.length; i++) {nums[i] = new int[i + 1];// 每一个元素都是 1Arrays.fill(nums[i], 1);// j = 1 每行的第一个元素跳过, j < nums[i].length - 1 跳过最后一个 i > 1 跳过前两行for (int j = 1; i > 1 && j < nums[i].length - 1; j++) {nums[i][j] = nums[i - 1][j] + nums[i - 1][j - 1];}}for (int i = 0; i < nums.length; i++) {System.out.println(Arrays.toString(nums[i]));}}}
【Java】基础练习(七)---二维数组相关推荐
- 实体类 接口_Java 语言基础编程题 (二维数组, 五子棋游戏, 实体类和接口)
原文:Java 语言基础编程题 (二维数组, 五子棋游戏, 实体类和接口, 视频讲解) 这里分享三道编程题, 下面是我个人的视频讲解 二维数组, 五子棋游戏, 实体类和接口_哔哩哔哩 (゜-゜)つロ ...
- java二维数组模拟用户登录_Java 语言基础编程题 (二维数组, 五子棋游戏, 实体类和接口)...
这里分享三道编程题, 下面是我个人的视频讲解我的解题思路以及代码运行演示https://www.zhihu.com/video/1253424180936724480 1. 编程实现以下需求: 定义一 ...
- java练习day06-Debug-进制-二维数组-杨辉三角
Day06 Debug Debug概述: Debug是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. Debug操作流程 Debug调试,又被 ...
- python基础01-定义二维数组
自学深度学习重拾python,发现自学打的基础就是不行,比如python中定义二维数组的问题,很怪,也很有意思. 找到了一篇大佬的文章:https://www.cnblogs.com/woshare/ ...
- 小白自学笔记——JAVA基础 3.2 多维数组
名词解释 Java 语言里提供了支持多维数组的语法. 如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,像Excel中的表格一样. 对于二维数组的理解,我们可以看成是一维数组a ...
- java实现n阶二维数组(n×n)的顺时针旋转90°、180°、270°
一.首先第一步是要初始化一个你任意的n阶方阵,初始化的语句参考如下: int arr[][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; 二 ...
- java中控制台输入二维数组(Scanner类总结)
由于牛客和LeetCode上的题目不用自己写输入,但实际笔试中都需要从输入开始写,遇到需要从控制台输入二维数组的情况,故对java中的Scanner类作整理和总结. 通过 Scanner 类能获取用户 ...
- 【C++基础学习】二维数组的动态分配及参数传递
1. C语言动态分配二维数组 (1)已知第二维 char (*a)[N];//指向数组的指针a = (char (*)[N])malloc(sizeof(char *) * m); printf(&q ...
- 10-20C#基础---一维、二维数组冒泡排序
一.一维数组 1.定义:是某一种数据类型的数据的组合,数组用来分组基本类型或相同类型的对象.数组中的实体叫做数组的元素或成员. 2. 格式:int[ ] shuzu=new int[ 6];存放int ...
- java中用length求二维数组的长度
今天刷题的时候碰到二维数组长度的问题,直接敲代码验证~ 用事实说话: 说明length求得的是二维数组的行数,即data[i][j]中的i 但如果要求二维数组的列数呢?很简单,用data[0].len ...
最新文章
- iOS端实现React Native差异化增量更新
- StringBuider 在什么条件下使用效率更高?
- 北师大听讲座-张建华-走近Russia
- Mysql学习总结(10)——MySql触发器使用讲解
- 字典与文本文档的转换
- 修改java启动参数_如何修改jvm启动参数
- uml里的extend和include_用例图中包含(include)扩展(extend)和泛化(generalization)关系详解...
- linux内核关闭网络巨帧xenomai,xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务...
- 主机字节序和网络字节序(大端序,小端序,网络序)
- 手机股票软件哪个好?这几款炒股app你不能错过!
- html表格的行合并代码,HTML代码制作的表格合并单元格教程
- DJFocus是个什么东东
- 独立同分布的大样本OLS回归
- 小程序上传头像图片裁剪
- web-log-parser 安装记录
- 2020的Android凉了?聊聊 Android 现状及出路!
- 我是佛前的一粒佛珠(请听配乐)
- 跟阿里巴巴学开会,我们拉着5位CEO聊如何“捅刀子”
- 计算机系统中ram表示什么,ram代表的是什么?
- 关于Android适配版本Q