java任意矩阵以二维数组输入输出

任意矩阵以二维数组输入,以矩阵形式输出

运行示例

输入:
[[3,7,8],[9,11,13],[15,16,17],[23,27,28]]
输出:
3 7 8 
9 11 13 
15 16 17 
23 27 28 

思路

用字符串参数对输入进行接受并处理,处理步骤如下:

        (1)用substring()对字符串两头的中括号截掉

        (2)用spilt()分别划分每行元素和每行元素中每个数字

        (3)将数组由String转变为int方式储存

代码

import java.util.Scanner;

public class two_dimensional_scanner {
	/*
	*输入任意矩阵并输出
	*输入例子 [[3,7,8],[9,11,13],[15,16,17]]
	*/
	public static void main(String[] args) {
		int[][] nums = new int[100][100];
		int i = 0,j = 0,k = 0;
		Scanner scanner = new Scanner(System.in);
		String I = scanner.nextLine();           //接受当前行输入的信息,并返回跳过的输入信息。即输入回车结束输入
		String S = I.substring(I.indexOf("[[")+2, I.lastIndexOf("]]"));
		/*
		* 此步是截取掉字符串中开头和结尾的两个中括号
		* substring(int beginIndex,int endIndex) 该函数是截取字符串指定位置间的子字符串
		* 该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。
		* indexOf(String str)       返回指定子字符串在此字符串中第一次出现处的索引。
		* lastIndexOf(String str)   返回指定子字符串在此字符串中最右边出现处的索引。
		* 注意:开头的中括号检索到的位置是第0位,我们要截去两个中括号,所以要加2。
		*/
		String[] trans = S.split("\\],\\[");
		/*
		 * 此步是将字符串中每行元素分开
		 * split(String regex)  根据给定正则表达式的匹配拆分此字符串。
		 * 注意:因为用的是正则表达式,所以在使用特殊字符(如 * | [ ] 等)时要进行转义。即在“[”和“]”前加“//”。
		 */
		for (String str : trans) {
			j = 0;
			String[] snum = str.split(",");   //此步是将每行元素中每个数字分开
			for (String string : snum) {
				nums[i][j++] = Integer.parseInt(string);  //将以字符串储存的数字转换成int方式
			}
			i++;
			//判断二维数组是否是矩阵
			if (i == 1) {
				k = j;
			}else {
				if (j != k) {
					try {
						throw new Exception("该数组不是矩阵,第"+i+"行元素个数异常");
					} catch (Exception e) {
						e.printStackTrace();
						System.exit(1);
					}
				}
			}
		}
		//矩阵输出
		for(int x = 0;x < i;x++){
			for (int y = 0; y < j; y++) {
				System.out.print(nums[x][y]+" ");
			}
			System.out.println();
		}
		scanner.close();
	}
}

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值