gpt4 book ai didi

java - while 循环用于 boolean 用户输入

转载 作者:行者123 更新时间:2023-11-29 08:15:40 24 4
gpt4 key购买 nike

在让程序大部分工作后(感谢您的帮助 :))。我所需要的只是添加 while 循环,以便用户可以根据需要多次获得菜单选项。它在继续切换到 false 的行开始给我错误,如“;预期”。这是代码。

import java.io.*;
import java.util.*;

class Matrix {

double[][] element;
int rows, cols;

Matrix(int rows, int cols) {
this.rows = rows;
this.cols = cols;
element = new double[rows][cols];
}

public double getValue(int row, int col) {
return element[row][col];
}

public void setValue(int row, int col, double value) {
element[row][col] = value;
}

public int getNoRows() { // returns the total number of rows
return rows;
}

public int getNoCols() { // returns the total number of cols
return cols;
}

// The methods for the main calculations
public Matrix AddMatrix(Matrix m2) {
int row1 = getNoRows();
int col1 = getNoCols();
Matrix result = new Matrix(row1, col1);

for (int i = 0; i < row1; i++) {
for (int j = 0; j < col1; j++) {
result.setValue(i, j, this.getValue(i, j) + m2.getValue(i, j));
}
}
return result;
}

public Matrix MultiplyMatrix(Matrix m2) {
if (this.getNoCols() != m2.getNoRows()) {
throw new IllegalArgumentException("matrices can't be multiplied");
}
int row2 = this.getNoRows();
int col2 = m2.getNoCols();
Matrix result = new Matrix(row2, col2);
for (int i = 0; i < row2; i++) {
for (int j = 0; j < col2; j++) {
result.setValue(i, j, result.getValue(i, j) + this.getValue(i, j) * m2.getValue(i, j));
}
}
return result;

}

public Matrix TransposeMatrix() {
int row3 = this.getNoCols();
int col3 = this.getNoRows();
Matrix result = new Matrix(row3, col3);
for (int i = 0; i < row3; i++) {
for (int j = 0; j < col3; j++) {
result.setValue(i, j, this.getValue(j, i));
}
}
return result;

}

public void DisplayMatrix() {
for (int i = 0; i < this.getNoRows(); i++) {
for (int j = 0; j < this.getNoCols();
j++) {
System.out.print((this.getValue(i, j)) + " ");
}
System.out.print("\n");
}
}
}


public class Lab1 {

public static void main(String args[]) throws FileNotFoundException {

int choice;
Scanner in = new Scanner(System.in);


Boolean continue = true;
while (continue){

System.out.println("Enter your choice /n");
choice = in.nextInt();

System.out.println("1. Add two matrices \n");
System.out.println("2. Multiplymatrix two matrices \n");
System.out.println("3. Take transpose of a matrix \n");
System.out.println("4. Display a matrix \n");
System.out.println("5. Exit \n");

if (choice == 1) {
Matrix m1 = MatrixReader();
m1.DisplayMatrix();
Matrix m2 = MatrixReader();
m2.DisplayMatrix();
Matrix m3 = new Matrix(m1.getNoRows(), m1.getNoCols());
m3 = m1.AddMatrix(m2);
m3.DisplayMatrix();
}

if (choice == 2) {
Matrix m1 = MatrixReader();
m1.DisplayMatrix();
Matrix m2 = MatrixReader();
m2.DisplayMatrix();
Matrix m3 = new Matrix(m1.getNoRows(), m2.getNoCols());
m3 = m1.MultiplyMatrix(m2);
m3.DisplayMatrix();
}



if (choice == 3) {
Matrix m1 = MatrixReader();
m1.DisplayMatrix();
Matrix m3 = new Matrix(m1.getNoRows(), m1.getNoCols());
m3 = m1.TransposeMatrix();
m3.DisplayMatrix();
}

if (choice == 4) {
System.out.println("Will need to call the DisplyMatrix method for the object \n");
}

if (choice == 5) {
continue = false;
}
else {
System.out.println("Incorrect input. Kindly enter again \n");
}
}
}

public static Matrix MatrixReader() throws FileNotFoundException {
System.out.println("Give the filename for the matrix");
Scanner filescanner = new Scanner(System.in);
Scanner scanner = new Scanner(new File(filescanner.nextLine()));
scanner.nextLine(); // removes the first line in the input file
String rowLine = scanner.nextLine();
String[] arr = rowLine.split("=");
int rows = Integer.parseInt(arr[1].trim());

String colLine = scanner.nextLine();
String[] arr2 = colLine.split("=");
int cols = Integer.parseInt(arr2[1].trim());
Matrix test = new Matrix(rows, cols);

for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
test.setValue(i, j, scanner.nextDouble());
}
}


return test;

}
}

最佳答案

一切看起来都不错,除了

Boolean continue = true;

continue = false;

等等

continue 是一个 reserved word并且不得用作标识符。将变量重命名为 cont 或类似名称。

顺便说一下,我建议您在此应用程序中使用 boolean 而不是 Boolean

此外,我认为您的 if 结构中存在错误:

if (choice == 1)
...
if (choice == 2)
...
if (choice == 5)
...
else
...

else 分支将在 choice != 5 的所有情况下被采用(也就是说,即使 choice 是 1, 2, 3, .... 所以也许您想将其更改为

if (choice == 1)
...
else if (choice == 2)
...
else if (choice == 3)
...
else
...

最后,您可能还想考虑使用 switch 进行选择:

switch (choice) {

case 1:
...
break;

case 2:
...
break;

...

default:
...
}

关于java - while 循环用于 boolean 用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5063179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com