【问题标题】:This code is not working [closed]此代码不起作用[关闭]
【发布时间】:2018-04-01 08:39:09
【问题描述】:

当我输入此代码时,我得到的答案是 58.18

public class text {

    public static void main(String[] args) {
        //Data Array
        double data[]={19.2,22.3,32.51,39,41.16,49.46,55.91,58.18};

        //Finding minimum angle
        double minimum_angle=0;
        for(int counter=0;counter<data.length;counter++){

          if(data[counter]<data[counter++]){
              minimum_angle=data[counter];
          }
          else {minimum_angle=data[counter++];}
        }
        System.out.print(minimum_angle);




    }

}

但是当我输入相同的内容并稍作修改时,我得到 55.91。为什么会这样?

public class Main_class {
    public static void main(String args[]){

        //Data Array
        double data[]={19.2,22.3,32.51,39,41.16,49.46,55.91,58.18};

        //Finding minimum angle
        double minimum_angle=0;
        for(int counter=0;counter<data.length;counter++){
            double x=data[counter];
            double y=data[counter++];
          if(x<y){
              minimum_angle=x;
          }
          else {
              minimum_angle=y;
          }
        }
        System.out.print(minimum_angle);
    }

【问题讨论】:

  • 1) 你显然在撒谎:代码正在工作。 2)什么是“小区别”?不要让你的听众梳理你的代码。
  • 如果你调用counter++两次,你将counter增加两次
  • 之所以如此,是因为您的算法没有做它应该做的事情。停止使用 ++。停止将一个元素与下一个元素进行比较。将每个元素与当前最小值进行比较。
  • 您的比较似乎有误。您将当前值与下一个值进行比较。但是你想找到最小的角度,不是吗?所以比较data[counter]minimum_angle

标签: java arrays


【解决方案1】:

你的两个 sn-ps 都不正确。

您误用了后自增运算符。

if(data[counter]<data[counter++])

永远不会是真的,就像

if(data[counter]<data[counter])

永远不会是真的。

后自增运算符返回自增变量的原始值。

尚不清楚为什么要在循环体中递增计数器。您应该只在 for 语句中增加它。为了找到最小值,您必须将data[counter]minimum_angle 进行比较:

double minimum_angle = Double.MAX_VALUE;
for(int counter = 0; counter < data.length; counter++) {
    if(data[counter] < minimum_angle) {
        minimum_angle = data[counter];
    }
}

【讨论】:

    【解决方案2】:
    public class text {
    
    public static void main(String[] args) {
        //Data Array
        double data[] = {19.2,22.3,32.51,39,41.16,49.46,55.91,58.18};
    
        //Finding minimum angle
        double minimum_angle = data[0];
        for(int counter = 1;counter < data.length;counter ++){
    
          if(minimum_angle < data[counter]){
              minimum_angle = data[counter];
          }
        }
        System.out.print(minimum_angle);
    
    
    
    
    }
    
    }
    

    使用 data[0] 初始化 minimum_angle 并将 minimum_angle 与索引 1 的数据数组进行比较。如果 minimum_angle 小于 data[index] 值,则将 minimum_angle 分配给 data[index] 以从数组中获取最小双精度值。

    【讨论】:

      【解决方案3】:

      看来您是编程新手。 无论如何尝试下面的代码。

          double data[]={19.2,22.3,32.51,39,41.16,49.46,55.91,58.18};
      
          double minimum_angle=data[0];
          for(int counter=0;counter<data.length;counter++)
              if(minimum_angle < data[counter])
                  minimum_angle = data[counter];
      
          System.out.print(minimum_angle);
      

      【讨论】:

      • 看起来您是 Stack Overflow 的新手。修复 OP 的代码而不做任何解释或解释他们做错了什么(尤其是在这样的问题中)不被认为是一个好的答案。
      • 有很多错误,所以我尽力解释。但从下次开始,如果我回答,我会给出解释。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 2015-03-04
      • 2014-02-28
      • 2015-12-24
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      相关资源
      最近更新 更多