向数组输入数据语句有问题,大家帮改改

//import java.util.Arrays;
import java.util.Scanner;

public class ArrTest {

public static void main(String[] args) {
    // 请在Begin-End间编写完整代码
    /********** Begin **********/
    // 从控制台获取输入值(当输入值为%时,终止获取),并给数组赋值

Scanner imput =new Scanner(System.in);
int q=imput.nextInt();
int Arrays1 []=new int [q];
for(int i=0;Arrays1[i]!='%'&i<q;i++){
Arrays1[i]=imput.nextInt();}
// 对数组元素求平方并排序
int a[]=new int[Arrays1.length];
for(int i=0;i<Arrays1.length;i++){
a[i]=Arrays1[i]*Arrays1[i];
}
for(int i=0;i<a.length;i++)
for(int j=i+1;j<a.length;j++){
int temp;
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
// 输出新数组
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}

   /********** End **********/
}

}

一边定义了数组长度,一边又要判断输入 % 结束,这本身就是 相悖的

首先,你的代码有问题,int q=imput.nextInt();这行只能输入数字,想要输入%就会出错,而且int Arrays1 []=new int [q]; 这行代表创建一个数组,如果输入的数字是一个负数也会出错。
// 请在Begin-End间编写完整代码
/********** Begin **********/
// 从控制台获取输入值(当输入值为%时,终止获取),并给数组赋值
Scanner imput = new Scanner(System.in);

    List<Integer> list = new ArrayList<>();
    //还得校验输入能不能转化为int
    while (true){
        String info  = imput.next();
        if (!info.equals("%")){
            Integer num =null ;
            try {
                num =   Integer.parseInt(info);
                list.add(num);
            } catch (NumberFormatException e) {
                System.out.println(info +"不是数字");
                e.printStackTrace();
            }
        }else break;
    }

    Integer[]  ints =  new Integer[list.size()];
    Integer[] Arrays1 = list.toArray(ints);

// 对数组元素求平方并排序
int a[] = new int[Arrays1.length];
for (int i = 0; i < Arrays1.length; i++) {
a[i] = Arrays1[i] * Arrays1[i];
}
for (int i = 0; i < a.length; i++)
for (int j = i + 1; j < a.length; j++) {
int temp;
if (a[i] > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
// 输出新数组
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}