键盘输入10个数,求最大,和排序,数组老越界啊

gyqinchao 2008-11-12 03:07:37
package com.JavaSeries.Java;
import java.io.*;
public class AppIn
{

public static void main(String[] args) throws IOException
{
int GetIn[]=new int[10];
int k=0,i=0,j=0;

BufferedReader read1=new BufferedReader(new InputStreamReader(System.in));


for(i=0;i<10;i++)
{


System.out.print("请输入:");
k=Integer.parseInt(read1.readLine());
GetIn[i]=k;






}


k=GetIn[0] ;
for(i=0;i<10;i++)
{
if(k<GetIn[i]) k=GetIn[i];
}
System.out.println("最大值是"+GetIn[i]+" ");

k=GetIn[0];
for(i=0;i<10;i++)
{
for(j=1;j<i;j++)
{
if(GetIn[i]<GetIn[j])
{
k=GetIn[i];
GetIn[i]=GetIn[j];
GetIn[j]=k;
}
}
}

System.out.println("输出结果是:");
for(i=0;i<10;i++)
{
System.out.println(GetIn[i]+" ");
}

}}



老师给的代码一直死循环,自己就把while(ture)换成了for 10次输入

10个数输完以后,就一直说

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at com.JavaSeries.Java.AppIn.main(AppIn.java:35)
...全文
174 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyqinchao 2008-12-15
  • 打赏
  • 举报
回复
多谢楼上的各位·~
leijinjin 2008-11-12
  • 打赏
  • 举报
回复
i=10的时候for循还结束,取GetIn[10]就越界的
kokatang12 2008-11-12
  • 打赏
  • 举报
回复
呵呵 实验过了 那个包是楼主自己定义的。。。
可是我把那包去掉程序一样出结果啊。。 那个包放这有什么作用啊??

看了楼主的程序 学会了输入 呵呵。。。。
kokatang12 2008-11-12
  • 打赏
  • 举报
回复
请问第一句话中 那个包是你自己定义的 还是系统中就定义好了的啊??? 本人初学,还有很多不明白的东西呢 呵呵!!
RJCHEN1985 2008-11-12
  • 打赏
  • 举报
回复
for(i=0;i <10;i++)
{
if(k <GetIn[i]) k=GetIn[i];
}
System.out.println("最大值是"+GetIn[i]+" "); //这里相当于GetIn[10],越界
kk19860205 2008-11-12
  • 打赏
  • 举报
回复
//改了一下
import java.io.*;
public class AppIn
{

public static void main(String[] args) throws IOException
{
int GetIn[]=new int[10];
int k=0,i=0,j=0;

BufferedReader read1=new BufferedReader(new InputStreamReader(System.in));


for(i=0;i <10;i++)
{


System.out.print("请输入:");
k=Integer.parseInt(read1.readLine());
GetIn[i]=k;


}



k=GetIn[0] ;
for(i=0;i <10;i++)
{
if(k < GetIn[i])
k=GetIn[i];
}
System.out.println("最大值是"+k+" ");

k=GetIn[0];
for(i=0;i <10;i++)
{
for(j=1;j <i;j++)
{
if(GetIn[i] <GetIn[j])
{
k=GetIn[i];
GetIn[i]=GetIn[j];
GetIn[j]=k;
}
}
}

System.out.println("输出结果是:");
for(i=0;i <10;i++)
{
System.out.println(GetIn[i]+" ");
}


}
}
Dan1980 2008-11-12
  • 打赏
  • 举报
回复
求最大值的那段,循环结束后,i已经是10了,当然越界,应该改为:

k=GetIn[0];
for(i=1;i <10;i++) {
if(GetIn[i]>k) k=GetIn[i];
}
System.out.println("最大值是"+k);
sbtmkdai 2008-11-12
  • 打赏
  • 举报
回复
LZ糊涂!程序执行到最大值输出的那步,你定义的K才是最大值!

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧