求解答,不知道出现什么问题(虽然知道自己写的挺麻烦的,但是孩子能写出来就不容易了)
public class top2 {
//错误票据
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
int w=scanner.nextInt();
String []s=new String[w];
String q=new String();
//将前面nextInt读取数据之后剩下的回车符干掉
scanner.nextLine();
for(int i=0;i<w;i++) {
s[i] = scanner.nextLine();
}
for(int i=0;i<w;i++) {
q += s[i]+" ";
}
q.replaceAll(" ",",");
String a[]=q.split(" ");
int []b= Arrays.stream(a)
.mapToInt(Integer::parseInt)
.toArray();
Arrays.sort(b);
int m=0;
int n=0;
int j=b[0];
for(int i=0;i<a.length;i++)
{
if((b[i])!=j)
{
m=j;
break;
}
j++;
}
for(int i=0;i<a.length-1;i++)
{
if(b[i]==(b[i+1]))
{
n=(b[i]);
break;
}
}
System.out.println(m+" "+n);
}
}
nextInt 仅仅只是读入数据,之后的回车符或者空格并没有读入
nextline 读入一行数据,知道回车停止
将字符数组转化为整形数组
int []b= Arrays.stream(a)
.mapToInt(Integer::parseInt)
.toArray();
思路:就是将整个数组进行排序,然后和本来连续的好熟进行比较,当第一个不相等的出现的时候,说明在原来的连续中这个是没有出现的
重复:排序之后只要出现相邻两个是一样的就是重复数据