在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