Java 如何输出数字递增的下三角矩阵?
我附上了一个我的任务是创建的例子。现在我只关注矩阵的下三角部分。由于某种原因,当我运行程序时,输出是完全空白的。非常感谢您的帮助Java 如何输出数字递增的下三角矩阵?,java,Java,我附上了一个我的任务是创建的例子。现在我只关注矩阵的下三角部分。由于某种原因,当我运行程序时,输出是完全空白的。非常感谢您的帮助 while(行和列20){ System.out.print(“多少行和多少列(最少4行,最多20行)”; rowsAndColumns=input_scanner.nextInt(); } int[][]intMatrix=新的int[rowsAndColumns][rowsAndColumns]; System.out.print(“整数填充正方形(0到50之间)
while(行和列<4 | |行和列>20){
System.out.print(“多少行和多少列(最少4行,最多20行)”;
rowsAndColumns=input_scanner.nextInt();
}
int[][]intMatrix=新的int[rowsAndColumns][rowsAndColumns];
System.out.print(“整数填充正方形(0到50之间)的起始数字是多少):”;
startingNumber=input_scanner.nextInt();
对于(x=0;x
现在我只关注下三角部分
矩阵
您的程序中有一个非常小的错误。在y的内部循环中,您需要从y=x开始,而不是从y=0开始。下面是将打印下三角的工作示例:
Integer rowsAndColumns = 0;
Integer startingNumber = 0;
Scanner input_scanner = new Scanner(System.in);
System.out.print("How many rows and columns (min 4 & max 20)? ");
rowsAndColumns = input_scanner.nextInt();
System.out.print("What is the starting number for your integer filled square (between 0 and 50 inclusive): ");
startingNumber = input_scanner.nextInt();
int[][] intMatrix = new int[rowsAndColumns][rowsAndColumns];
for (int x = 0; x <= (rowsAndColumns - 1); x++) {
for (int y = x; y <= (rowsAndColumns - 1); y++) {
intMatrix[y][x] = startingNumber;
startingNumber++;
}
}
for (int x = 0; x < intMatrix.length; x++) {
for (int y = 0; y < intMatrix[x].length; y++) {
System.out.print(intMatrix[x][y] + " ");
}
System.out.println("");
}
整数行和列=0;
整数起始数=0;
扫描器输入\扫描器=新扫描器(System.in);
System.out.print(“多少行和多少列(最少4行,最多20行)”;
rowsAndColumns=input_scanner.nextInt();
System.out.print(“整数填充正方形(0到50之间)的起始数字是多少):”;
startingNumber=input_scanner.nextInt();
int[][]intMatrix=新的int[rowsAndColumns][rowsAndColumns];
对于(int x=0;x这个答案基于这样一个灵感:虽然您所需的输出很难用Java术语表达,但该矩阵的转置实际上非常简单:
1 2 3 4 5
25 6 7 8 9
24 23 10 11 12
22 21 20 13 14
19 18 17 16 15
很明显,要生成上面的矩阵,我们可以保留两个计数器,分别从1和25开始,然后填充每一行。一旦生成了这个矩阵,我们就可以打印转置以获得您想要的实际输出
int size = 5;
int[][] matrix = new int[size][size];
int start = 1;
int end = size*size;
for (int r=0; r < size; ++r) {
int col=0;
while (col < r) {
matrix[r][col++] = end--;
}
while (col < size) {
matrix[r][col++] = start++;
}
}
// now print the transpose:
for (int r=0; r < size; ++r) {
for (int c=0; c < size; ++c) {
System.out.print(matrix[c][r] + " ");
}
System.out.println("");
}
在这里,我根据您的任务制定了一个解决方案
在您的任务中,第一级挑战是根据用户输入的起始数计算矩阵的最后一个元素,这将是任意值,根据您的任务,起始数是1,因此很容易计算,但在这里,我制作了一个公式来计算矩阵的最后一个元素
假设您输入的矩阵大小为X*X,起始数字为M,如果我用K表示矩阵的最后一个元素,则:
K = totalMatrixElement(X*X) + (M-1);
现在,我有矩阵的上下元素,它们是:
lowerConter = M and upperCounter = K
现在,我已经准备好填写我的矩阵,并以各种格式打印出我的矩阵,如displayCompleteMatrix、displayLowerTrangleMatrix或displayUpperTrangleMatrix
看看我的节目:
package com;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class LowerTrangleMatrix {
public static void main(String...strings) throws NumberFormatException, IOException {
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
int rowsAndColumns = 0;
boolean flag = true;
do {
try {
System.out.println("How many rows and columns (min 4 & max 20)? ");
rowsAndColumns = Integer.parseInt(read.readLine());
if ((rowsAndColumns > 3 && rowsAndColumns < 21)) {
System.out.println("Your row * column is " + rowsAndColumns + "*" + rowsAndColumns);
flag = false;
} else {
System.out.println("Your Input is Not Acceptable try again...");
}
} catch (NumberFormatException ex) {
System.out.println("Input must be Integer.");
}
} while (flag);
int[][] matrix = new int[rowsAndColumns][rowsAndColumns];
int startingNumber = 0;
flag = true;
do {
try {
System.out.print("What is the starting number for your integer filled square (between 0 and 50 inclusive): ");
startingNumber = Integer.parseInt(read.readLine());
if ((startingNumber > 0 && startingNumber < 50)) {
System.out.println("Your matrix will be start fillup with : " + startingNumber);
flag = false;
} else {
System.out.println("Your Input is Not Acceptable try again...");
}
} catch (NumberFormatException ex) {
System.out.println("Input must be Integer.");
}
} while (flag);
matrixFill(matrix, rowsAndColumns, startingNumber);
displayCompleteMatrix(matrix, rowsAndColumns);
displayLowerTrangleMatrix(matrix, rowsAndColumns);
displayUpperTrangleMatrix(matrix, rowsAndColumns);
}
public static void matrixFill(int[][] matrix, int rowsAndColumns, int startingNumber) {
int lowerCounter = startingNumber;
int totalMatrixElement = rowsAndColumns * rowsAndColumns;
int upperCounter = totalMatrixElement + (lowerCounter - 1);
for (int i = 0; i < rowsAndColumns; i++) {
for (int j = 0; j < rowsAndColumns; j++) {
if (j >= i) {
matrix[j][i] = lowerCounter++;
} else {
matrix[j][i] = upperCounter--;
}
}
}
}
public static void displayCompleteMatrix(int[][] matrix, int rowsAndColumns) {
System.out.println("Filled Matrix :::::::::::");
for (int i = 0; i < rowsAndColumns; i++) {
for (int j = 0; j < rowsAndColumns; j++) {
System.out.print(" " + matrix[i][j]);
}
System.out.println();
}
}
public static void displayLowerTrangleMatrix(int[][] matrix, int rowsAndColumns) {
System.out.println("Lower Trangle Matrix :::::::::::");
for (int i = 0; i < rowsAndColumns; i++) {
for (int j = 0; j < rowsAndColumns; j++) {
if (i >= j)
System.out.print(" " + matrix[i][j]);
else
System.out.print(" 0");
}
System.out.println();
}
}
public static void displayUpperTrangleMatrix(int[][] matrix, int rowsAndColumns) {
System.out.println("Upper Trangle Matrix :::::::::::");
for (int i = 0; i < rowsAndColumns; i++) {
for (int j = 0; j < rowsAndColumns; j++) {
if (i <= j)
System.out.print(" " + matrix[i][j]);
else
System.out.print(" 0");
}
System.out.println();
}
}
}
package-com;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
公共类LowerTrangleMatrix{
publicstaticvoidmain(String…strings)抛出NumberFormatException、IOException{
BufferedReader read=新的BufferedReader(新的InputStreamReader(System.in));
int rowsAndColumns=0;
布尔标志=真;
做{
试一试{
System.out.println(“多少行和多少列(最少4行,最多20行)”;
rowsAndColumns=Integer.parseInt(read.readLine());
如果((行和列>3和行和列<21)){
System.out.println(“您的行*列是“+rowsAndColumns+”*“+rowsAndColumns”);
flag=false;
}否则{
System.out.println(“您的输入不可接受,请重试…”);
}
}捕获(NumberFormatException ex){
System.out.println(“输入必须是整数”);
}
}而(旗),;
int[][]矩阵=新int[rowsAndColumns][rowsAndColumns];
int startingNumber=0;
flag=true;
做{
试一试{
System.out.print(“整数填充正方形(0到50之间)的起始数字是多少):”;
startingNumber=Integer.parseInt(read.readLine());
如果((起始编号>0&&起始编号<50)){
System.out.println(“您的矩阵将开始填充:“+startingNumber”);
flag=false;
}否则{
System.out.println(“您的输入不可接受,请重试…”);
}
}捕获(NumberFormatException ex){
System.out.println(“输入必须是整数”);
}
}而(旗),;
矩阵填充(矩阵、行和列、起始编号);
displayCompleteMatrix(矩阵、行和列);
显示LowerTrangleMatrix(矩阵、行和列);
显示UpperTransgleMatrix(矩阵、行和列);
}
公共静态无效矩阵填充(int[][]矩阵,int行和列,int起始编号){
int lowerCounter=起始编号;
int TotalMatrixement=行和列*行和列;
int upperCounter=totalMatrixElement+(lowerCounter-1);
对于(int i=0;i=i){
矩阵[j][i]=低计数++;
}否则{
矩阵[j][i]=上限计数器--;
}
}
}
}
公共静态void displayCompleteMatrix(int[][]矩阵,int行和列){
System.out.println(“填充矩阵:;
对于(int i=0;i=j)
系统输出打印(“+矩阵[i][j]);
其他的
系统输出打印(“0”);
}
System.out.println();
}
}
公共静态void DisplayUpperTransgleMatrix(int[][]矩阵,int行和列){
System.out.println(“上变换矩阵:;
对于(int i=0;ilowerConter = M and upperCounter = K
package com;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class LowerTrangleMatrix {
public static void main(String...strings) throws NumberFormatException, IOException {
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
int rowsAndColumns = 0;
boolean flag = true;
do {
try {
System.out.println("How many rows and columns (min 4 & max 20)? ");
rowsAndColumns = Integer.parseInt(read.readLine());
if ((rowsAndColumns > 3 && rowsAndColumns < 21)) {
System.out.println("Your row * column is " + rowsAndColumns + "*" + rowsAndColumns);
flag = false;
} else {
System.out.println("Your Input is Not Acceptable try again...");
}
} catch (NumberFormatException ex) {
System.out.println("Input must be Integer.");
}
} while (flag);
int[][] matrix = new int[rowsAndColumns][rowsAndColumns];
int startingNumber = 0;
flag = true;
do {
try {
System.out.print("What is the starting number for your integer filled square (between 0 and 50 inclusive): ");
startingNumber = Integer.parseInt(read.readLine());
if ((startingNumber > 0 && startingNumber < 50)) {
System.out.println("Your matrix will be start fillup with : " + startingNumber);
flag = false;
} else {
System.out.println("Your Input is Not Acceptable try again...");
}
} catch (NumberFormatException ex) {
System.out.println("Input must be Integer.");
}
} while (flag);
matrixFill(matrix, rowsAndColumns, startingNumber);
displayCompleteMatrix(matrix, rowsAndColumns);
displayLowerTrangleMatrix(matrix, rowsAndColumns);
displayUpperTrangleMatrix(matrix, rowsAndColumns);
}
public static void matrixFill(int[][] matrix, int rowsAndColumns, int startingNumber) {
int lowerCounter = startingNumber;
int totalMatrixElement = rowsAndColumns * rowsAndColumns;
int upperCounter = totalMatrixElement + (lowerCounter - 1);
for (int i = 0; i < rowsAndColumns; i++) {
for (int j = 0; j < rowsAndColumns; j++) {
if (j >= i) {
matrix[j][i] = lowerCounter++;
} else {
matrix[j][i] = upperCounter--;
}
}
}
}
public static void displayCompleteMatrix(int[][] matrix, int rowsAndColumns) {
System.out.println("Filled Matrix :::::::::::");
for (int i = 0; i < rowsAndColumns; i++) {
for (int j = 0; j < rowsAndColumns; j++) {
System.out.print(" " + matrix[i][j]);
}
System.out.println();
}
}
public static void displayLowerTrangleMatrix(int[][] matrix, int rowsAndColumns) {
System.out.println("Lower Trangle Matrix :::::::::::");
for (int i = 0; i < rowsAndColumns; i++) {
for (int j = 0; j < rowsAndColumns; j++) {
if (i >= j)
System.out.print(" " + matrix[i][j]);
else
System.out.print(" 0");
}
System.out.println();
}
}
public static void displayUpperTrangleMatrix(int[][] matrix, int rowsAndColumns) {
System.out.println("Upper Trangle Matrix :::::::::::");
for (int i = 0; i < rowsAndColumns; i++) {
for (int j = 0; j < rowsAndColumns; j++) {
if (i <= j)
System.out.print(" " + matrix[i][j]);
else
System.out.print(" 0");
}
System.out.println();
}
}
}