Java 使用扫描仪在控制台中显示多个变量

Java 使用扫描仪在控制台中显示多个变量,java,java.util.scanner,Java,Java.util.scanner,问题是,当您使用扫描仪输入输入时,它会显示在控制台上。我要他们按顺序展示。我想让他们表现得像一个矩阵。但使用nextInt方法时,它们都显示出彼此的底部 我想要这样的控制台输出: 但是使用nextLine()方法,您的新int在nextLine上显示如下: 如何使用扫描仪在同一行中显示多个变量 import java.util.Scanner; public class ProbilityMatrixTest { static int M; static int N; static fl

问题是,当您使用扫描仪输入输入时,它会显示在控制台上。我要他们按顺序展示。我想让他们表现得像一个矩阵。但使用nextInt方法时,它们都显示出彼此的底部

我想要这样的控制台输出:

但是使用nextLine()方法,您的新int在nextLine上显示如下:

如何使用扫描仪在同一行中显示多个变量

import java.util.Scanner;

public class ProbilityMatrixTest {

static int M;
static int N;
static float[][] matrixX;
static float[][] matrixY;
static boolean isProbilityMatrix;

public static void main(String[] args) {
    initiate();
    testMatrix(matrixX);
    System.out.println();
    multiplyMatrix();
    testMatrix(matrixY);
}

public static void initiate() {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter the row and column size of matrix : ");
    M = sc.nextInt();
    N = sc.nextInt();
    System.out.println();


    matrixX = new float[M][N];
    System.out.println("Enter values of " + M + "x" + N + " matrix :");
    for (int j = 0; j < N; j++) {
        for (int i = 0; i < M; i++) {
            matrixX[i][j] = sc.nextFloat();
        }
    }
}

public static void testMatrix(float[][] givenMatrix) {
    isProbilityMatrix = true;
    if (M != N) {
        isProbilityMatrix = false;
    }
    for (int j = 0; j < N; j++) {
        float rowVariablesTotal = 0;
        for (int i = 0; i < M; i++) {
            rowVariablesTotal += givenMatrix[i][j];
            if (givenMatrix[i][j] < 0) {
                isProbilityMatrix = false;
            }
        }
        if (rowVariablesTotal != 1.0f) {
            isProbilityMatrix = false;
        }
    }
    System.out.print("TEST RESULT : ");
    if (isProbilityMatrix) {
        System.out.println("Probility matrix");
    } else {
        System.out.println("not Probility matrix");
    }
}

public static void multiplyMatrix() {

        matrixY = new float[M][N];
        for (int i = 0; i < M; i++) {
            for (int j = 0; j < N; j++) {
                float newMatrixVariable = 0;
                for (int a = 0; a < M; a++) {
                    newMatrixVariable += (matrixX[i][a] * matrixX[a][j]);
                }
                matrixY[i][j] = newMatrixVariable;
            }
        }
        System.out.println("The square of given matrix:");
        for (int j = 0; j < M; j++) {
            for (int i = 0; i < N; i++) {
                System.out.print(matrixY[i][j] + "  ");
            }
            System.out.println();
        }


}
import java.util.Scanner;
公共类ProbilityMatrixTest{
静态int-M;
静态int N;
静态浮点[][]矩阵xx;
静态浮动[][]矩阵;
静态布尔非概率矩阵;
公共静态void main(字符串[]args){
发起();
testMatrix(matrixX);
System.out.println();
多重矩阵();
testMatrix(matrixY);
}
公共静态无效初始化(){
扫描仪sc=新的扫描仪(System.in);
System.out.print(“输入矩阵的行和列大小:”);
M=sc.nextInt();
N=sc.nextInt();
System.out.println();
matrixX=新浮点数[M][N];
System.out.println(“输入“+M+”x“+N+”矩阵的值:”);
对于(int j=0;j
}


您需要一次扫描整行。否则,您总是按enter键,使其看起来像是在前几行中先输入一个值

例如,键入
3,然后输入,然后可以键入三个以空格分隔的十进制值,输入,然后重复两次

System.out.print("Enter the row and column size of matrix : ");
String[] mn = sc.nextLine().split("\\s+");
int M = Integer.parseInt(mn[0]);
int N = Integer.parseInt(mn[1]);
System.out.println();

double[][] matrixX = new double[N][];
for (int i = 0; i < N; i++) {
    matrixX[i] = new double[M];
    String[] row = sc.nextLine().split("\\s+");
    for (int j = 0: j < M: j++) {
        matrix[i][j] = Double.parseDouble(row[j]);
        //... 
    } 
} 
System.out.print(“输入矩阵的行和列大小:”);
字符串[]mn=sc.nextLine().split(\\s+);
int M=Integer.parseInt(mn[0]);
int N=Integer.parseInt(mn[1]);
System.out.println();
双精度[]矩阵xx=新双精度[N][];
对于(int i=0;i
请显示您的代码尝试,并详细说明您在使用此代码时遇到的问题。您知道扫描仪对象与结果的显示无关,因此您需要关注
系统.out
PrintStream
方法,包括
print
println
printf
(最通用的方法)在控制台上显示变量时,我不需要使用system.out.print。扫描仪变量已出现在控制台上。我要的是按顺序给他们看。但对于每一个nextInt()方法,我都只差一行。我想让matris看看:但它显示了每只水獭的所有底部。非打印方法的问题在于,它的扫描仪总是下一行显示输入(糟糕的英语sry)。您需要在一行上准确地键入值是的。我想决定扫描仪输入要写的部分。所以输入看起来像一个矩阵。我有一种感觉。顺便说一句,你是说我可以用这个代码显示我想要的扫描仪输入,对吗?输入行和列的大小。。。不知道你为什么只打了一个号码。请在复制之前试着理解代码的作用。现在我非常理解它。你是说我需要用空格来写。我不能输入所有代码。是的,行得通。但我认为输入每一个输入是不可能的。扫描仪只会在您按enter键后接受输入,因此没有其他方法来格式化您的值。扫描仪必须从下一行获取其他输入,它不能从同一行获取。我必须用2个变量做1个输入,而不是拆分它。顺便说一句,我怎么能找到像“s//+”这样的拆分代码,我只发现“s//”意味着我想的下一个单词。