11.01

一.hasNext 和 hasNextLine 的区别

  • 1.hasNext()方法会判断接下来是否有非空字符.如果有,则返回

true,否则返回

false

  • 2.hasNextLine() 方法会根据行匹配模式去判断接下来是否有一行(包括空行),如果有,则返回

true,否则返回

false

比如当前我们有如下测试用例:

7 15 9 5 1

这个测试用例在牛客网上是以文件的形式进行存储的.

而在 linux 系统中文件的结尾会有一个换行符\n,也就是说从System.in输入流中真正读取到的数据流是这样的:

7 15 9 5\n 1

程序在处理完5之后,输入流中就只剩下一个换行符\n了,在处理完5之后while再去进行循环判断,此时hasNext()方法和hasNextLine()方法去判断得到的结果就产生了差异.

  • hasNext()方法会认为之后再没有非空字符,会返回一个

false

  • hasNextLine() 方法会认为换行符

\n是一个空行,符合行的匹配模式,则会返回一个

true,但实际上由于之后再没有数据了,所以会在读取输入流的时候发生异常,从而导致整个运行报错.

建议方案:

采用hasNextXxxx() 的话,后面也要用nextXxxx():

  • 比如前面用

hasNextLine(),那么后面要用 

nextLine() 来处理输入;

  • 后面用 

nextInt() 方法的话,那么前面要使用 

hasNext()方法去判断.

二.链表的建立

1.穷举建立链表

因为链表是由一个个节点链接而成,节点是由val和next构成 ,没有节点类这种说法,所以单独建立一个类建立节点.

里面放入两个属性,VAL 和next,

并设置一个构造方法来初始化val(放数据的)

2.建立表类

建立一个函数来初始化节点

节点的NEXT也就是第二个节点的地址,并让第一个节点赋值给头节点

但是注意,随着函数的建立和结束,临时变量都会销毁,但是在堆上建立的对象还是在那里,所以数据和地址都不会销毁,head为什么可以被赋值,因为他属于类里的属性可以在类里任何地方使用,所以除了head其他的都被回收,如果想要找到就要通过head,

3.建立表头

不能在节点类型建立,因为头节点属于链表的属性

4.打印链表

用表头的地址打印,然后通过的表头的NEXT属性找到下一个.然后表头被赋值给下一个,继续,直到表头的next为null

那就意味着走到最后一个位置,但是注意表头也会走不回去,所以就建立一个节点类型的对象,把表头的数据传给他,并随着函数的结束,她会销毁.

class MyNode{
    public int val;
    public MyNode next;

    public MyNode(int a ){
        this.val=a;
    }
}

class MyLinklist {
    public MyNode head ;
    public void creatnode(){
        MyNode node1=new MyNode(1);
        MyNode node2=new MyNode(2);
        MyNode node3=new MyNode(3);
        MyNode node4=new MyNode(4);

        node1.next=node2;
        node2.next=node3;
        node3.next=node4;
         this.head=node1;
    }
    public void dispaly(){
        MyNode cul =head;
        while(cul!=null){
            System.out.print(cul.val+"  ");
            cul=cul.next;
        }
    }
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值