【问题标题】:If statements aren't calling correct Strings or Booleans如果语句没有调用正确的字符串或布尔值
【发布时间】:2014-01-07 13:13:36
【问题描述】:

好的,基本上我有一个显示数组中位数的客户端,如果它是有序的 这是在服务器中检查的, 如果数组不按顺序排列,则它会产生“错误消息”,但不会产生中位数。 但是它继续处理数组中位数的值,尽管我创建了两个条件,因此只有 IF(boolean = true 然后它显示中位数)

下面是我所说的部分的客户'

        double median = Server.getMedian(array);

        Boolean truefalse = Server.checkFalse(array);
        // prints the response if the array is in order or not
        String response = Server.errorMsg(array);
        System.out.println(truefalse);
        if(truefalse = false){
            System.out.println(response);
        }
        else if(truefalse = true){
            System.out.println(response);
            System.out.println("The median of the array is " + median + ".");
        }
    }}
'

这是来自服务器的方法。 if( ((array[i+1] array[i] && (array[0] > array[9])))){ 上面的这一行检查升序和降序'

 public static String errorMsg(int[] array){
            String checker = "Error, the numbers are not in order";
            for(int i =0; i<array.length-1; i++){
                if( (array[i+1] < array[i]) || ((array[i+1] > array[i] && (array[1] > array[9]))) ){
                    return checker;
                }
            }
            return "The numbers are in order!";  
        }



        public static Boolean checkFalse(int[] array){
            for(int i =0; i<array.length-1; i++){
 if( (array[i+1] < array[i]) || ((array[i+1] > array[i] && (array[1] > array[9]))) ){
                    return false;
                }
            }
            return true;  
        }



    public static double getMedian(int[] array){
        double median;
        if (array.length%2 == 0){
    median = ((double)(array[(array.length/2)-1] + (double)array[array.length/2])/2);
        }
        else{
            median = (array[(array.length/2)-1]);
        }
        return median;
    }
'

这是我从 Java 中得到的响应

错误,数字不正确

数组的中位数是 5.5。

【问题讨论】:

  • 您是否使用=== 检查相等性?
  • ==而不是=检查Java中的相等性。

标签: java arrays string boolean


【解决方案1】:
if(truefalse = false){
            System.out.println(response);
        }
        else if(truefalse = true){
            System.out.println(response);
            System.out.println("The median of the array is " + median + ".");
        }

错了……用

if(trueFalse)  //bad way of naming a boolean variable BTW

'=' 将值 false/true 分配给 truefalse...它不检查..

【讨论】:

  • @AdamCalcanes - 我们都去过一次......:P
【解决方案2】:

== 用于比较值。

= 是赋值运算符,而不是比较运算符。

试试==:

if(truefalse == false)

【讨论】:

    【解决方案3】:

    = 是赋值,而不是等价。

    现在,您可以切换您的所有语句,如下所示:

    if(truefalse = false)
    

    到:

    if(truefalse == false)
    

    ...但我会提出一个更好的方法。既然你已经有了某种布尔值,为什么不直接使用它呢?

    if(!truefalse)  //shorthand for truefalse is false
    
    if(truefalse) //shorthand for truefalse is true
    

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      相关资源
      最近更新 更多