当前位置: 代码迷 >> Java相关 >> 求大侠看看,哪里错了?
  详细解决方案

求大侠看看,哪里错了?

热度:226   发布时间:2011-07-16 19:27:31.0
求大侠看看,哪里错了?
程序代码:
package e;

public class NumList {
    private int [] numList=null;
    private int pos=0;
   
    public void setLength(int length){
        numList=new int [length];
    }
   
    private int getPos(int value){
        int curPos;
        int i;
        for( i=pos-1;i>=0;i--)
            if(numList [i]>value)
                numList[i+1]=numList[i];
            else
                break;
        curPos=i+1;
        return curPos;
      
    }
   
    public void AddValue(int value){
        if(pos<numList.length){
            int insertPos=getPos(value);
            numList[insertPos]=value;
            pos++;
        }
    }
   
    public int getValue(int pos){
        return numList[pos];
    }
   
    public String toString(){
        String data=" ";
        for(int singleData:numList){
            data=data + singleData + " ";
        }
        return data;
    }
   
    public  void main(String [] args){
        setLength(5);
        AddValue(1);
        AddValue(2);
        AddValue(3);
        AddValue(4);
        System.out.println(getValue(3));
        System.out.println(toString());
      
      
    }
}
搜索更多相关的解决方案: 看看  

----------------解决方案--------------------------------------------------------
"""""public  void main(String [] args){"""""""  主方法是静态的啊  是 public static void mai(String args[])


还要个setPos();
----------------解决方案--------------------------------------------------------
我现在已将入口函数改为了静态的,并且将方法也和成员变量也改为了static,但还会在public static String toString()报错。这下来咋改?


package e;

public class NumList {
    private static int [] numList=null;
    private static int pos=0;
   
    private static void setLength(int length){
        numList=new int [length];
    }
   
    private static int getPos(int value){
        int curPos;
        int i;
        for( i=pos-1;i>=0;i--){
            
            if(numList [i]>value)
                numList[i+1]=numList[i];
            else
                break;
        }
        curPos=i+1;
        return curPos;
        
    }
   
    public static void AddValue(int value){
        if(pos<numList.length){
            int insertPos=getPos(value);
            numList[insertPos]=value;
            pos++;
        }
    }
   
    public static int getValue(int pos){
        return numList[pos];
    }
   
    public static String toString(){
        String data=" ";
        for(int singleData:numList){
            data=data + singleData + " ";
        }
        return data;
    }
   
    public  static void main(String [] args){
        setLength(5);
        AddValue(1);
        AddValue(2);
        AddValue(3);
        AddValue(4);
        System.out.println(getValue(3));
        System.out.println(toString());
        
        
    }
}

----------------解决方案--------------------------------------------------------
看得真纠结啊,一门纯面向对象的语言都变成了面向过程了,找不着本该有的对象……希望楼主本身不要找不着对象,呵呵
重写成员方法时是不能把它写成静态的,明白不?
写代码要有对象有类的概念。木有对象说不下去面向对象。
程序代码:
public class NumList {
    private int[] numList = null;
    private int pos = 0;

    private void setLength(int length) {
        numList = new int[length];
    }

    private int getPos(int value) {
        int curPos;
        int i;
        for (i = pos - 1; i >= 0; i--) {

            if (numList[i] > value)
                numList[i + 1] = numList[i];
            else
                break;
        }
        curPos = i + 1;
        return curPos;

    }

    public void AddValue(int value) {
        if (pos < numList.length) {
            int insertPos = getPos(value);
            numList[insertPos] = value;
            pos++;
        }
    }

    public int getValue(int pos) {
        return numList[pos];
    }

    public String toString() {
        String data = " ";
        for (int singleData : numList) {
            data = data + singleData + " ";
        }
        return data;
    }

    public static void main(String[] args) {
        NumList numList = new NumList();
        numList.setLength(5);
        numList.AddValue(1);
        numList.AddValue(2);
        numList.AddValue(3);
        numList.AddValue(4);
        System.out.println(numList.getValue(3));
        System.out.println(numList.toString());

    }
}



[ 本帖最后由 洛云 于 2011-7-17 11:52 编辑 ]
----------------解决方案--------------------------------------------------------
我这几天才开始学java,之前学了C和C++,但编的不多,所以基础东西还掌握的不好,不过还是很感谢你。
----------------解决方案--------------------------------------------------------
回复 5楼 小小鸟001
语言只是语法而已,重要的是编程思想。
另外,get和set方法(如你的例子中的getPos),不赞成你的写法。setPos应该是对pos这个私有变量赋值,而get方法应该是返回这个成员变量的值,get方法也不应该写成私有的,因为它是给外部对私有变量赋值时调用的。一般常的写法是
public void setPos(int pos) {
    this.pos = pos;
}
public int getPos() {
    return pos;
}

如果在接触一门新的语言,有点不知如何下手时,建议就是多看看例子代码。外国的一些教材,挺不错的。如《21天学通Java》或《THINKING IN JAVA》
----------------解决方案--------------------------------------------------------
  相关解决方案