interface不应该用来放static field。虽然语法上没问题,但是Java编程规范反对这样做。你可以用final class。

解决方案 »

  1.   

    1.Index接口呢?2.root函数的最后一行加上return y4;3.程序的最后在
    catch(EOFException e) {
          System.out.println("End of stream");
        }
    的后面加上
        catch(FileNotFoundException e) {
          System.out.println("File Not Found");
        }
        catch(IOException e) {
          System.out.println("IO Error");
        }
      

  2.   

    是这样的,如果把interface 改为final class
    就会出现这样的错误:
    Csc.java:25:non-static variable velocity cannot be referenced
    from a static context
    还有
    如果把out2.writeDouble(csc.L1);
          out2.writeDouble(csc.A);
          out2.writeDouble(csc.B);
          out2.writeDouble(csc.V);
          out2.writeDouble(csc.h3pie);
          out2.writeDouble(csc.a);
          out2.writeDouble(csc.h3);
          out2.writeDouble(csc.H);
          out2.writeDouble(csc.minV);
    中的csc.都去掉
    就会出现同样的错误
    但有,
    回出现更多的错误
      

  3.   

    你在声明的前面加上static不就行了
      

  4.   

    to smallnest:
    Index只是用来提供static final 的数据
    root()方法里用的是二分法
    是迭代
    其中有return y4;
    对于异常的建议,我接受!
      

  5.   

    加上static 也不行
    请大家再仔细看一下
    问题的症结!
      

  6.   

    root总要有个返回值,if (!(s2+1.0==1.0))请问你的return在哪里
      

  7.   

    double root(double y1,double y2,double y3,double y4){
          double s1=f(y1,v,Index1.a1);
          y4=(y1+y2)/2;
          while (Math.abs(y2-y1)>y3){
            double y5=0;
            double y6=0;
            double s2=f(y4,v,Index1.a1);
            if(s2+1.0==1.0){
              return y4;/*请smallnest 注意,在这里。if(!(s2+1.0==1.0))那么继续循环,直到这儿再返回!*/
            }
            if (s1*s2>0){
               y5=y4;
            }
            else{
               y6=y4;
            }
            y4=(y5+y6)/2;
          }
         
        }
      

  8.   

    Geshan是你自定义的吗,还有Index1里的成员和方法是什么,我刚才在j++里编译了一下,没有Geshan这个包
      

  9.   

    即使你能保证你输入的数据肯定会出现s2+1.0==1.0的情况
    但java不知道啊,因为你还没实际输入数据,
    所以java会认为 有!(s2+1.0==1.0))且退出while的情况在这种情况下你必须有个返回值
      

  10.   

    to smallnest:
    你说的到了关键
    其实我实际输入了数据,我通过了调用
    double rr=root(0.0,10.0,0.001,h3pie);
    就可以了
    to zxy355:
    其实Geshan是一个包,但没有别的意思,知识调用里面的数据
    你可以用一个常数来代替。。
    。。
      

  11.   

    如果 if(s2+1.0==1.0){
              return y4;}
    为假,最后一步y4=(y5+y6)/2;再第一次执行时y4就是0,是这样吧