java 输入一个正整数n,再输入n个整数,将最小值与第一个数交换,最大值与最后一个数 100

importjava.util.Scanner;publicclassTest60004{publicstaticvoidmain(String[]args){intri... import java.util.Scanner;
public class Test60004{
public static void main(String []args){
int ri, repeat;
int i, index, n, t, a[], m, l;

Scanner in=new Scanner(System.in);
repeat=in.nextInt();
index=0;
t=0;
m=0;
l=0;
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
a=new int[n];
for(i=0; i<n; i++){
a[i]=in.nextInt();
/*---------*/

if(a[index]<a[i]){
index=i;
}
if(a[t]>a[i]){
t=i;
}
}

m=a[0];
l=a[n-1];
a[0]=a[t];
a[n-1]=a[index];
a[t]=m;
a[index]=l;

for(i=0; i<n; i++)
System.out.print(a[i]+" ");
System.out.println();
求问这个哪里错了
题目是
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数n,再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。
例:括号内是说明
输入
3 (repeat=3)
5 4 3 5 1 2
4 1 5 6 7
5 5 4 3 2 1
输出
1 3 2 4 5
1 5 6 7
1 4 3 2 5
展开
 我来答
谁用了我双鱼兔
2014-05-15 · TA获得超过607个赞
知道小有建树答主
回答量:241
采纳率:58%
帮助的人:31.1万
展开全部
数组越界了。
假如我上次输入的是 5 5 4 3 2 1
这次输入 4 1然后就会报错
原因是上次的t没有被初始化 t是4 这次的数组共4个值,所以最大只能a[3] 但是在比较的时候出现了a[4]所以就越界了

修改方案是把这些初始化
t=0;
m=0;
l=0; 放到第一个for语句后面
追问
for(ri=1; ri<=repeat; ri++){

t=0;
m=0;
l=0;
n=in.nextInt();

谢谢 但是
我运行的结果是对的 但是答题系统告诉我答案错误 怎么办TAT
追答
答题系统?是你自己练习的还是要过什么级别职称什么的?
如果不是太重要就不要纠结评判结果的对错了。主要是要知道思路然后组织语言编写出来
你还是在学习吧?有时候不需要钻牛角尖了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式