首页 > 编程语言 >java创建链表异常解决

java创建链表异常解决

时间:2024-08-22 11:04:47浏览次数:10  
标签:Node linklist java 创建 链表 实例 Link new data

问题解决

问题解释

该错误表明,在试图创建非静态类实例时,没有正确引用外部类的实例。
源代码如下

package vjudge;

import java.util.Scanner;

public class test {

    // 节点类
    public class Node {
        int data;
        Node next;

        Node(int data) {
            this.data = data;
            this.next = null;
        }
    }

    // 链表类
    public class Link {
        private Node head;

        Link() {
            this.head = null;
        }

        public void add(int data) {
            if (this.head == null) {
                Node p = new Node(data);
                head = p;
            } else {
                Node p = new Node(data);
                head.next = p;
            }
        }
    }

    public static void main(String[] args) {
        
        Link link = new Link(); 
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int p = scanner.nextInt();
        
        for (int i = 1; i <= n; i++) {
            link.add(i); 
        }

    }
}

问题分析

报错来源是Link link = new Link(); 由于非静态内部类依赖于外部类实例,Link是linklist的非静态内部类,所以它和linklist绑定,所以首先应该创建linklist的实例。

但是可以发现,Link类的add方法中,Node可以直接通过new实现,因为Link类也是linklist的非静态内部类,所以Link类的实例已经隐式地拥有了对linklist实例地调用。因为Node是linklist的内部类,并且Link已经具备了创建Node的上下文(即linklist的实例)

问题解决

修改代码如下

linklist list = new linklist();  // 先创建外部类的实例
Link link = list.new Link();     // 通过外部类实例来创建内部类对象

标签:Node,linklist,java,创建,链表,实例,Link,new,data
From: https://www.cnblogs.com/Sun-Wind/p/18373400

相关文章

  • 单链表入门
    1.概念与结构概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。2.结点与顺序表不同的是,链表⾥的每一个都是独⽴申请下来的空间,我们称之为“结点/结点”结点的组成主要有两个部分:当前结点要保存的数据......
  • JavaScript day-09
    目录1.从ECMA到W3C1.1API的概念1.2WebAPI的概念2.什么是DOM?3.DOM节点4.DOM节点树5.节点之间的关系6.获取元素节点6.1根据id获取元素6.2根据标签名获取元素6.3根据class获取元素6.4获取特殊元素7.修改节点7.1改变HTML内容7.2改变CSS样......
  • 字符串值提取工具-10-java 执行表达式引擎
    值提取系列字符串值提取工具-01-概览字符串值提取工具-02-java调用js字符串值提取工具-03-java调用groovy字符串值提取工具-04-java调用java?Janino编译工具字符串值提取工具-05-java调用shell字符串值提取工具-06-java调用python字符串值提取工具-07-java调......
  • VSCode打开HBuilderX创建的uniapp项目
    要在VisualStudioCode(VSCode)中打开由HBuilderX创建的UniApp项目,您可以按照以下步骤操作:目录1.打开VSCode2.打开项目文件夹3.安装所需插件4.配置项目5.启动开发服务6.开发和调试7.其他工具1.打开VSCode确保您的VSCode已经安装并配置好。如果......
  • 【JavaScript】字符串01 - padStart() 和 padEnd()
    在JavaScript中,我们可以使用padStart()和padEnd()方法来完成字符串补全。下面给大家介绍一下这两个方法的使用。padStart()方法用于在当前字符串的前面填充指定的字符,直到字符串的长度达到指定的长度。padEnd()方法用于在当前字符串的后面填充指定的字符,直到字符串的长......
  • Java——三个关键字:static
    static关键字在Java中,static是一个关键字,用于修饰类的成员(变量、方法等)。静态成员属于类本身而不是类的实例,这意味着每个类都有唯一的静态变量副本,所有该类的对象共享这个副本,而不论创建了多少个对象。有static修饰的代码和没有static修饰的代码的区别:有static修饰的代码属......
  • 数据结构初阶(2)——链表OJ
    目录1.面试题02.02.返回倒数第k个节点2.OR36链表的回文结构3.160.相交链表1.面试题02.02.返回倒数第k个节点思路:快慢指针,快指针先走k格,慢指针同步/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode......
  • Java毕设项目II基于Java新闻稿件管理系统
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言在信息爆炸的时代,新闻稿件的高效管理与快......
  • 初识JavaScript
    1.什么是JavaScriptJavaScript(JS)是⼀种具有函数优先的轻量级,解释型或即时编译型的编程语⾔。虽然它是作为开发Web⻚⾯的脚本语⾔⽽出名的,但是它也被⽤到了很多⾮浏览器环境中,例如Node.js、ApacheCouchDB和AdobeAcrobat。JavaScript是⼀种基于原型编程、多范式的......
  • 登录注册java版
    packagecom.shujia.day18.logindemo;importjava.io.*;importjava.util.ArrayList;importjava.util.Scanner;/*登录注册java版:思考1:将用户名和密码写在记事本中,编写登录和注册的方法,要求必须先注册才可以登录思考2:修改用户的信息,记事本实现......