【问题标题】:Use boolean method to determine output使用布尔方法确定输出
【发布时间】:2015-11-09 03:10:45
【问题描述】:

我试图让用户为三行中的每一行输入三个数字。然后分别将第 1、2 和 3 列的值相加。如果所有 3 列的值独立加起来为 1,那么它应该使用布尔方法打印出“是”。我不知道如何让布尔方法工作,这里的例子都不够具体,可以帮助我。有什么想法可以让它正常工作吗?

import java.util.*;

public class MarkovMatrix {

    public static void main(String[] args) {
        //Initializing all arrays
        double[] FirstRow = new double[3];
        double[] SecRow = new double[3];
        double[] ThirdRow = new double[3];
        double[] ColSum = new double[3];
        Scanner input = new Scanner(System.in);

        //Getting input from user
        System.out.print("Enter first Row: ");
        for(int i = 0; i < FirstRow.length; i++){
            FirstRow[i] = input.nextDouble();
        }
        System.out.print("Enter Second Row: ");
        for(int j = 0; j < SecRow.length; j++){
            SecRow[j] = input.nextDouble();
        }
        System.out.print("Enter Third Row: ");
        for(int k = 0; k < ThirdRow.length; k++){
            ThirdRow[k] = input.nextDouble();
        }

        // Summing all columns
        ColSum[0] = FirstRow[0] + SecRow[0] + ThirdRow[0];
        ColSum[1] = FirstRow[1] + SecRow[1] + ThirdRow[1];
        ColSum[2] = FirstRow[2] + SecRow[2] + ThirdRow[2];

        boolean isMarkovMatrix; 

        if(isMarkovMatrix = true)
            System.out.println("Matrix is a Markov Matrix");
    }//End of main

    public static boolean isMarkovMatrix(ColSum double) {
        if(ColSum[0] = 1 && ColSum[1] = 1 && ColSum[2] = 1)
            return true;
    }
}

【问题讨论】:

  • 你还没有初始化isMarkovMatrix,然后你打算在if(isMarkovMatrix = true)中使用它。猜猜你需要正确研究你的代码以避免这样的事情

标签: java methods boolean


【解决方案1】:

语句if(isMarkovMatrix = true) 将始终被评估为真,因为您将true 分配给isMarkovMatrix。相反,您应该这样做:

if(isMarkovMatrix == true)

或者更好,只是

if(isMarkovMatrix)

编辑:在您的isMarkovMatrix 方法签名中,您需要先放置数据类型,然后再放置变量。

此外,= 是一个赋值运算符== 是您要在此方法中使用的正确比较运算符

public static boolean isMarkovMatrix(double[] ColSum) {
        if (ColSum[0] == 1 && ColSum[1] == 1 && ColSum[2] == 1)
            return true;
        return false;
    }

顺便说一句:你真的想比较双精度和整数吗?为什么不直接使用整数?

【讨论】:

  • 谢谢。它还说明在 public static boolean isMarkovMatrix(ColSum double) 中存在错误。它在说它的期待;在 ColSum 和 double 之后。 ColSum 不是输入,double 不是输入的类型吗?
  • 所有输入都是小数,例如 .45 .74 .82。如果这些都加起来为 1,那么它是好的,否则它不是马尔可夫矩阵。
  • @Requin 好的,那么您可能希望有一定程度的公差精度。例如 0.0000001
猜你喜欢
  • 2011-12-27
  • 2017-05-09
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 2019-07-18
  • 2016-11-28
  • 2017-05-23
  • 2010-12-11
相关资源
最近更新 更多