【Java】基础练习(七)

编程入门 行业动态 更新时间:2024-10-12 14:20:39

【Java】<a href=https://www.elefans.com/category/jswz/34/1770030.html style=基础练习(七)"/>

【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】基础练习(七)

本文发布于:2024-03-15 00:02:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737656.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基础   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!