java程序单行输入可以顺利读入,多行输入提示错误。

在pta测试过程中,对于样例,每一次只输入一行的数据,会得到正确结果,多行粘贴输入报错。

import java.util.Scanner;
class Node {
    int data;//data作为编号
    int np;//np作为密码
    String names;//name就是姓名
    Node next;
    public Node(int data,String names,int np)
    {
        this.np=np;
        this.names=names;
        this.data=data;
        this.next=null;
    }
}
class Circlelist
{
    public int size=0;
    public Node head;
    public int shu=0;
    public Node add(int data,String name,int np){//添加结点。
        Node newNode = new Node(data,name,np);
        if(size == 0){
            head = newNode;
            head.next = head;
        }else{
            Node target = head;
            while(target.next!=head){
                target = target.next;
            }
            target.next = newNode;
            newNode.next = head;
        }
        size++;
        return newNode;
    }
    public void shown(int n){
        Node node = head;
        int length = size;
        if(size > 0){
            for(;n>1;n--)
                node=node.next;
            head=node;
            if(shu>0){System.out.print(" ");System.out.println();}
            System.out.print(head.data+","+head.names+","+head.np);//这儿到了显示的地方,每一个都是头文件
            shu++;
            head=this.delete(head);
            size--;
            shown(node.np);
        }
    }
    public Node delete(Node current)
    {
        Node end=head;
        if(size==1)
            return null;
        while(end.next!=head){
            end = end.next;
        }
        end.next=head.next;
        head=head.next;
        return head;
    }
}
public class Main {
    public static void shuru(Circlelist list)
    {
        Scanner cin = new Scanner(System.in);
        String s= cin.nextLine();
        String[] nums = s.split(",") ;
        int c = Integer.parseInt(nums[0]) ;
        String b=nums[1];
        int d = Integer.parseInt(nums[2]) ;
        list.add(c,b,d);
    }
    public static void main(String args[])
    {
        Circlelist list=new Circlelist();
        int a;
        Scanner cin = new Scanner(System.in);
        a=cin.nextInt();
        for(;a>0;a--)
            shuru(list);
        int n;
        n=cin.nextInt();
        list.shown(n);
    }
}



正确的结果,但如果将样例的输入全部粘贴输入,则会如图片下方显示的,提示错误。

错误说的很明白,把空字符串(“”)当成数字,想要转,转类型失败。
而这个“”哪来的呢?我记得没错的话,这个nextLine()就会换行,而你粘贴的时候又换了一次行所以换了两次,一次输入了“”,一次提交,然后就这样了

你的数据最后是不是有空行呀。你帮空行删除了就行了。

1
2
3
4
(空行)

你复制的时候从 4 的后面(同一行)开始复制,不要从下一行的开头开始复制。

你好,由于是一个作业,所以输入格式不可能变了,粘贴输入,请问,如果要修改有哪些想法呢?求教

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632