DLL 实现 & 不能使静态引用错误



嗨,我收到错误消息"无法对非静态字段进行静态引用">

在下一个代码的粗体行中,我不知道如何修复它,并且我的实现对于链表是否正确,知道我希望它是一个双向链表

import java.util.Scanner;
import java.util.LinkedList;
import java.lang.Number;
public class chainLadder {
    static Scanner s = new Scanner (System.in);
    public   LinkedList<Object> readData() {
         LinkedList<Object> listData = new LinkedList();
         Integer cost=0;
        
        System.out.println("how many years are you calculating");
            int numY=s.nextInt();
while(numY!=0) {    
    
 
     int i =1;
         System.out.println("please Enter the year"+i+" to calculate from ");
             String year = s.next();
                     listData.add(year);
                     listData.add(">"); // what comes after is the cost and before is the year
                     System.out.println("enter the costs of year"+year+"/n  enter ( -1 ) when done ");
                     while(cost != -1) {
                         cost = s.nextInt();
                         if(cost == -1)
                             break;
                         listData.add(cost);
                         System.out.println("next");
}
                     listData.add("<"); // what comes before is the cost and after  is the year

   numY--;// going down till we finish all the years
   i++;
  
}//end of while
    return listData;
    }//end method readData
    
    
}//end class

通常,当您收到错误时,您应该包括编译器标记为包含错误:)的行 - 只是一个提示。

你的问题是"静态"是一个有点奇特的概念,至少相对于学习Java的最初几周而言。我建议你避免它。为此,请将其用作骨架:

class MyApp {
public static void main(String[] args) throws Exception {
new MyApp().go();
}
void go() throws Exception {
// your code goes here
}
}

如果需要命令行参数,请为go方法指定String[] args参数。然后,不要做任何静态的东西,除了main必须的

。静态当然是有用的,但也许不是一个特别值得开始Java学习的概念,如果你不理解它,它只会引起无休止的混乱。

如果你坚持不做这个改变,你必须在chainLadder的 ist 上调用readData方法,所以:new chainLadder().readData();,而不是chainLadder.readData();

拥有一个"异构"列表(一个包含不同概念的列表;你的列表包含年份值和成本作为单独的对象(是非常不像Java的。

你应该创建一个表示年份/成本对的类,并将其设为List<YearInfo>或其他什么,或者更有可能你想要一个将年份映射到成本的地图,所以,一个Map<Integer, Integer>

您使用的是现有的链表,而不是编写自己的链表。如果你需要一个双向链表,因为家庭作业需要它,那么重点是你自己编写整个实现,而不是使用java.util.LinkedList,以便你了解链表是如何工作的。没有现实生活中的要求去'它..必须。。成为双链表!鉴于只有几千年与人类相关,您的列表永远不会包含足够的项目。因此,ArrayList是正确的答案,即使它在算法上看起来不合理。也就是说,如果你想要一个列表 - 如果这不是家庭作业练习,很可能Map就是你要找的。

相关内容

  • 没有找到相关文章

最新更新