网站首页 > java教程 正文
一、说明
#定义一个长度为[16][16]的整型二维数组并输入或指定所有位置的元素值,分别实现二维数组中所有行和所有列中所有元素的累加和并打印。
二、代码实现
代码如下(示例):
package com.lagu.homwork2;
import com.lagou.task10.StaticOuter;
import java.util.Random;
import java.util.Scanner;//借用扫描器
/**
* 定义一个长度为[16][16]的整型二维数组并输入或指定所有位置的元素值,分别实现二维数组中所有行和所有列中所有元素的累加和并打印。
* 再分别实现二维数组中左上角到右下角和右上角到左下角所有元素的累加和并打印(对角线上的元素)。
*/
public class PrintArrayArrayTest {
public static void main(String[] args) {
//1. 先定义一个扫描器
Scanner sc = new Scanner(System.in);
//2.定义一个int型的二维数组
System.out.print("请输入数组的行数:");
int row = sc.nextInt();
System.out.print("请输入数组的列数:");
int column = sc.nextInt();
int[][] arr = new int[row][column];
//2.2 根据需求判断选择那是输入方式
while(true){
System.out.println("请选择“手动输入”还是“自动生成”一个整型二维数组: ");
String str = sc.next();
if ("手动输入".equals(str)) {
//2.3输入二维数组的值
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第" + (i + 1) + "行的" + arr[i].length + "个元素");
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = sc.nextInt(); //读取arr[i][j]的值
}
}
break; //退出循环
} else if ("自动生成".equals(str)) {
//2.4电脑随机产生二维数组
Random ra = new Random();
for(int i = 0; i < arr.length; i++){
for(int j = 0 ; j < arr[i].length; j++){
arr[i][j]= ra.nextInt(10); //a[i][j] 取 0 ~ 9之间的随机值
}
}
break;
} else {
System.out.println("输入有误!"); //输入判断,有误继续循环提示输入
}
}
//3 打印输入的二维数组
System.out.println("初始数组为:");
for(int i = 0; i < arr.length; i++){
for(int j = 0 ; j < arr[i].length; j++){
System.out.print(arr[i][j]+ " "); //打印a[i][j]
}
System.out.println("");//换行
}
System.out.println("------------------------------------------------");
//3.实现所有行的相加并打印
System.out.println("行相加:");
//3.1 定义一个int型的一维数组[16]来存放个行之和
int[] sum1 = new int[row];
//3.2 打印每行元素相加
for(int i = 0; i < arr.length; i++){
System.out.print("第" + (i+1) + "行之和:");
for(int j = 0 ; j < arr[i].length; j++){
if(j< arr[i].length - 1) {
System.out.print(arr[i][j] + " + ");
}else{
System.out.print(arr[i][j]);
}
sum1[i] += arr[i][j];
}
System.out.println(" = " + sum1[i]);
}
System.out.println("------------------------------------------------");
//4.实现所有列的相加并打印
//4.1 将数组arr[i][j] 转换换成数组arr1[j][i]
int[][] arr1 = new int[column][row]; //新定义一个数组是为了代码的可扩展性 比如:3行4列也可以实现所有列中所有元素的累加和并打印
//4.2 定义一个int型的一维数组[16]来存放每个"列"(行)之和
int[] sum2 = new int[column];
System.out.println("列相加:");
for(int i = 0; i < arr1.length; i++){
System.out.print("第" + (i+1) + "行之和:");
for(int j = 0 ; j < arr1[i].length; j++){
arr1[i][j] = arr[j][i]; //将每列的值赋值给每行
if(j< arr1[i].length - 1) {
System.out.print(arr1[i][j] + " + ");
}else{
System.out.print(arr1[i][j]);
}
sum2[i] += arr1[i][j];
}
System.out.println(" = " + sum2[i]);
}
System.out.println("------------------------------------------------");
//5. 实现左上角到右下角对角线上的元素累加并打印
System.out.println("打印左上角到右下角对角线上的元素:");
int sum3 = 0; //定义sum3来记录打印左上角到右下角对角线上的元素之和
for(int i = 0; i < arr.length; i++){
for(int j = 0 ; j < arr[i].length; j++){
if(i == j){
sum3 += arr[i][j];
System.out.print(arr[i][j]); //如果是对角线上的元素则显示
}else {
System.out.print(" "); //如果不是对角线上的元素则打印空格
}
}
System.out.println(""); //换行
}
System.out.println("左上角到右下角对角线上的元素之和 = " + sum3);
System.out.println("------------------------------------------------");
//5. 实现右上角到左下角对角线上的元素累加并打印
System.out.println("右上角到左下角对角线上的元素: ");
int sum4 = 0; //定义sum4来记录打印右上角到左下角对角线上的元素之和
for(int i = 0; i < arr.length; i++){
for(int j = 0 ; j < arr[i].length; j++){
if(arr.length == (i + j)){ //右上角到左下角对角线上的元素特征是arr.length == (i + j)
sum4 += arr[i][j];
System.out.print(arr[i][j]);//如果是则打印出来
}else {
System.out.print(" ");//否则打印空格
}
}
System.out.println(""); //换行
}
System.out.println("右上角到左下角对角线上的元素之和 = " + sum4);
}
}
2.代码实现
代码如下(示例):
请输入数组的行数:7
请输入数组的列数:8
请选择“手动输入”还是“自动生成”一个整型二维数组:
自动生成
初始数组为:
8 1 2 2 0 6 6 3
5 9 6 4 8 0 0 4
3 8 5 9 4 0 5 5
7 4 2 8 8 9 1 7
3 9 6 3 3 5 8 4
8 5 9 9 0 9 3 7
3 1 0 6 5 7 3 0
------------------------------------------------
行相加:
第1行之和:8 + 1 + 2 + 2 + 0 + 6 + 6 + 3 = 28
第2行之和:5 + 9 + 6 + 4 + 8 + 0 + 0 + 4 = 36
第3行之和:3 + 8 + 5 + 9 + 4 + 0 + 5 + 5 = 39
第4行之和:7 + 4 + 2 + 8 + 8 + 9 + 1 + 7 = 46
第5行之和:3 + 9 + 6 + 3 + 3 + 5 + 8 + 4 = 41
第6行之和:8 + 5 + 9 + 9 + 0 + 9 + 3 + 7 = 50
第7行之和:3 + 1 + 0 + 6 + 5 + 7 + 3 + 0 = 25
------------------------------------------------
列相加:
第1行之和:8 + 5 + 3 + 7 + 3 + 8 + 3 = 37
第2行之和:1 + 9 + 8 + 4 + 9 + 5 + 1 = 37
第3行之和:2 + 6 + 5 + 2 + 6 + 9 + 0 = 30
第4行之和:2 + 4 + 9 + 8 + 3 + 9 + 6 = 41
第5行之和:0 + 8 + 4 + 8 + 3 + 0 + 5 = 28
第6行之和:6 + 0 + 0 + 9 + 5 + 9 + 7 = 36
第7行之和:6 + 0 + 5 + 1 + 8 + 3 + 3 = 26
第8行之和:3 + 4 + 5 + 7 + 4 + 7 + 0 = 30
------------------------------------------------
打印左上角到右下角对角线上的元素:
8
9
5
8
3
9
3
左上角到右下角对角线上的元素之和 = 45
------------------------------------------------
右上角到左下角对角线上的元素:
3
0
0
8
3
9
1
右上角到左下角对角线上的元素之和 = 24
总结
猜你喜欢
- 2024-11-21 新手初学Java数组难度大?这篇文章帮你解决
- 2024-11-21 Java-实现动态数组(ArrayList<Integer>集合)
- 2024-11-21 新手初学Java要注意什么 数组要学哪些知识点
- 2024-11-21 Java笔记二数组
- 2024-11-21 郑州Java培训学习之数组知识梳理
- 2024-11-21 从零开始学JAVA-3.超详细-方法和数组的学习
- 2024-11-21 C/C++编程笔记:如何在C++中打印数组参数大小?赶紧补课
- 2024-11-21 C语言的数组的构建与打印
- 2024-11-21 如何在 Bash shell 脚本中打印数组
- 2024-11-21 shell中如何逆序打印数组的内容,或者反转一个数组?
你 发表评论:
欢迎- 最近发表
-
- 五,网络安全IDA Pro反汇编工具初识及逆向工程解密实战
- 「JAVA8」- Lambda 表达式(java lambda表达式原理)
- 深入探讨Java代码保护:虚拟机保护技术的新时代
- Nginx反向代理原理详解(图文全面总结)
- 逆向拆解日本IT,哪些Java技术栈薪资溢价高
- mybatis 逆向工程使用姿势不对,把表清空了,心里慌的一比
- Spring Boot集成ProGuard轻松实现Java 代码混淆, Java 应用固若金汤
- 从 Java 代码逆向工程生成 UML 类图和序列图
- 人与人相处:尊重是标配,靠谱是高配,厚道是顶配
- Windows系统安装日期如何修改(windows10怎么修改安装日期)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)