大家来看看我的代码有什么问题啊,求解答
10 7 12 8 11 那么抹除掉的整数只可能是9
5 6 7 8 那么抹除掉的整数可能是4也可能是9
输入描述:
输入包括2行: 第一行为整数n(1 <= n <= 50),即抹除一个数之后剩下的数字个数 第二行为n个整数num[i] (1 <= num[i] <= 1000000000)
输出描述:
在一行中输出所有可能是抹除掉的数,从小到大输出,用空格分割,行末无空格。如果没有可能的数,则输出mistake
输入例子:
2 3 6
输出例子:
mistake下面是我的代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
publicclass Main {
public static void main(String[] args) {
System. out .println("请输入剩余数字的个数和所剩余的数字,数字之间用空格隔开");
int n=number();
ArrayList<Integer> num =new ArrayList<>();
num = num();
if (!(n>=1 && n<= 50 && n == num.size())) {
System.out.println("输入的数字个数有误,请重新输入");
main(args);
}
for (int i = 0; i < num.size(); i++) {
if (num.get(i)<1 || num.get(i)>1000000000) {
System.out.println("输入的数字有误,请重新输入");
main(args);
}
}
Collections.sort(num);
int a=num.get(num.size()-1);
int b=num.get(0);
if ((a-b+1) == num.size()) {
if (b == 1) {
System.out.println((a+1));
}
else if (a == 1000000000) {
System.out.println((b-1));
}
else {
System.out.println((b-1) +" " + (a+1));
}
}
if ((a-b+1) == (num.size()+1)) {
int j=0;
for(int i=b;i<a;i++){
if (i==num.get(j++)) {
continue;
}
else {
System.out.println(i);
break;
}
}
}
if ((a-b+1) == (num.size()+1+1)) {
System.out.println("mistake");
}
}
static int number(){
Scanner reader=new Scanner(System.in);
int n=reader.nextInt();
String s=reader.nextLine();
return n ;
}
static ArrayList<Integer> num(){
Scanner reader=new Scanner(System.in);
String s=reader.nextLine();
String[] arr = s.split(" ");
ArrayList<Integer> number = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
number.add(Integer.parseInt(arr[i]));
}
return number ;
}
}