java 大虾请进

weickchen 2007-07-06 11:19:30
//java 数组实现排序
import java.io.*;
class Fi //输入整数并存入数组,最后排序
{
public static void main(String[] b)
throws java.io.IOException
{
int i,j,k,t,m,n;
int a[]=new int[10];
for(i=0;i<10;i++)
{
System.out.print("enter please: ");
BufferedReader re=new BufferedReader
(new InputStreamReader(System.in));
a[i]= Integer.parseInt(re.readLine());
System.out.println();
}

for(m=0;m<10;m++) //排序前输出
System.out.print(a[m]+" ");
System.out.println();
for(k=1;k<10;k++) //冒泡法进行排序
{
for(j=9;j>=i;j--)
{
if(a[j-1]>a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
}
for(n=1;n<=10;n++) //排序后输出
System.out.print(a[n]+" ");
}
}

///////////////////////////////////////////////
问题:为什么排序后结果输不出来,显示的错误是“Exception in thread “main”java.lang.ArrayIndexoutofBoundsException: 10”,初学java,看不明白,50分请教诸位大虾说一下原因,小弟感激不尽!
...全文
250 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
weickchen 2007-07-08
  • 打赏
  • 举报
回复
哦,明白了,谢谢!
weickchen 2007-07-08
  • 打赏
  • 举报
回复
多情剑客,我的循环条件是 for (i = 0; i < 10; i++)
没有 i=10
还是非常谢谢各位的关照,谢谢!
huoyin 2007-07-08
  • 打赏
  • 举报
回复
我说的是你代码中的最后一个循环语句,也就是打印输出结果的那个循环,参见你的代码倒数第四行。
hookee 2007-07-07
  • 打赏
  • 举报
回复
主要问题是数组是0下标开始的(排序后输出),另外最后一个元素不用排序了.
import java.io.*;

class Fi // 输入整数并存入数组,最后排序
{
public static void main(String[] b) throws java.io.IOException {
int i, j, k, t, m, n;
int a[] = new int[10];
for (i = 0; i < 10; i++) {
System.out.print("enter please: ");
BufferedReader re = new BufferedReader(new InputStreamReader(
System.in));
a[i] = Integer.parseInt(re.readLine());
System.out.println();
}

for (m = 0; m < 10; m++)
// 排序前输出
System.out.print(a[m] + " ");
System.out.println();
for (i = 1; i < 9; i++) // 冒泡法进行排序
{
for (j = 9; j >= i; j--) {
if (a[j - 1] > a[j]) {
t = a[j - 1];
a[j - 1] = a[j];
a[j] = t;
}
}
}
for (n = 0; n < 10; n++)
// 排序后输出
System.out.print(a[n] + " ");
}
}
kingxin130 2007-07-07
  • 打赏
  • 举报
回复
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

public static void main(String[] args)
{
int i;
int a[] = new int[10];
for (i = 0; i < 10; i++)
{
System.out.print("enter please: ");
BufferedReader re = new BufferedReader(new InputStreamReader(System.in));
try
{
a[i] = Integer.parseInt(re.readLine());
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println();
}

Arrays.sort(a);

for (int n : a)
System.out.print(n + " ");
}
weickchen 2007-07-07
  • 打赏
  • 举报
回复
非常谢谢,hookee!
怎么按照你的修改后最后输出(已经正确输出)还带着这句话 Exception in thread “main”java.lang.ArrayIndexoutofBoundsException: 10
是什么意思,搞不明白
huoyin 2007-07-07
  • 打赏
  • 举报
回复
你的错误在这一句吧: for(n=1;n<=10;n++) //排序后输出

既然你的数组只有10元素,如果你用a[10]则会报ArrayIndexoutofBoundsException。

将其改为试试: for(n=0;n<a.length;n++) //或 for(n=0;n<10;n++)
hookee 2007-07-07
  • 打赏
  • 举报
回复
我这里没有报这个错。
这个错的原因还是 对数组下标的引用越界,单步调试下看看。
weickchen 2007-07-07
  • 打赏
  • 举报
回复
你的代码没错,运行的结果是正确的排序结果,只是搞不清楚最后为什么还出现
Exception in thread “main”java.lang.ArrayIndexoutofBoundsException: 10
定义的数组已经够用了,没越界
weickchen 2007-07-07
  • 打赏
  • 举报
回复
hookee,运行了你的代码,我这里运行的结果最后带着
Exception in thread “main”java.lang.ArrayIndexoutofBoundsException: 10
这句话,定义的数组并没有越界,能解释一下吗,非常感谢!!
hookee 2007-07-07
  • 打赏
  • 举报
回复
直接运行我的代码看看,我这里并没有出错.
weickchen 2007-07-06
  • 打赏
  • 举报
回复
很菜的问题,菜鸟刚学java,渴望大虾的回复!!

23,404

社区成员

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

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