有一道java基础问题,一直编译不成功,求人解答。
package深入类;//本例通过实现不同的数据进行排序输出的人物,说明如何实现方法的重载。importjava.awt.Graphics;importjava.appl...
package 深入类;
//本例通过实现不同的数据进行排序输出的人物,说明如何实现方法的重载。
import java.awt.Graphics;
import java.applet.Applet;
public class Intsort {
class IntSort {
public String sort(int a, int b) {
// TODO Auto-generated method stub
return null;
}
public String sort(int a, int b, int c) {
// TODO Auto-generated method stub
return null;
}
public String sort(int[] arr) {
// TODO Auto-generated method stub
return null;
}
}
public String sort(int a, int b){
if (a>b) return a+" "+b;
else return b+""+a;
}
public String sort(int a, int b, int c){
int swap;
if (a<b) { swap=a; a=b; b=swap;}
if (a<c) { swap=a; a=c; c=swap;}
if (b<c) { swap=b; b=c; c=swap;}
return a+" "+b+" "+c;
}
public String sort(int arr[]){
String s=" ";
int swap;
for(int i=0; i<=arr.length; i++)
for(int j=0; j<=arr.length-1; j++)
if(arr[j]>arr[j+1])
{ swap=arr[j+1]; arr[j+1]=arr[j]; arr[j]=swap;}
for(int i=0; i<arr.length; i++)
s=s+arr[i]+" ";
return s;
}
public class Class2 extends Applet {
IntSort s = new IntSort();
public void paint(Graphics g){
int a=30, b=12, c=40;
int arr[]={34,8,13,38,94,2,4,39,57};
g.drawString("两个数的排血结果:"+s.sort(a,b),30,30);
g.drawString("三个数的排序结果:"+s.sort(a,b,c) ,30,60);
g.drawString("数组的排列结果:"+s.sort(arr), 30 , 90 );
}
} 展开
//本例通过实现不同的数据进行排序输出的人物,说明如何实现方法的重载。
import java.awt.Graphics;
import java.applet.Applet;
public class Intsort {
class IntSort {
public String sort(int a, int b) {
// TODO Auto-generated method stub
return null;
}
public String sort(int a, int b, int c) {
// TODO Auto-generated method stub
return null;
}
public String sort(int[] arr) {
// TODO Auto-generated method stub
return null;
}
}
public String sort(int a, int b){
if (a>b) return a+" "+b;
else return b+""+a;
}
public String sort(int a, int b, int c){
int swap;
if (a<b) { swap=a; a=b; b=swap;}
if (a<c) { swap=a; a=c; c=swap;}
if (b<c) { swap=b; b=c; c=swap;}
return a+" "+b+" "+c;
}
public String sort(int arr[]){
String s=" ";
int swap;
for(int i=0; i<=arr.length; i++)
for(int j=0; j<=arr.length-1; j++)
if(arr[j]>arr[j+1])
{ swap=arr[j+1]; arr[j+1]=arr[j]; arr[j]=swap;}
for(int i=0; i<arr.length; i++)
s=s+arr[i]+" ";
return s;
}
public class Class2 extends Applet {
IntSort s = new IntSort();
public void paint(Graphics g){
int a=30, b=12, c=40;
int arr[]={34,8,13,38,94,2,4,39,57};
g.drawString("两个数的排血结果:"+s.sort(a,b),30,30);
g.drawString("三个数的排序结果:"+s.sort(a,b,c) ,30,60);
g.drawString("数组的排列结果:"+s.sort(arr), 30 , 90 );
}
} 展开
3个回答
展开全部
我看了你的程序,方法重载不需要建立内部类,直接实现方法重载就可以了。
下面是我给你改的程序,Intsort和Class2两个类,要在Intsort.java和Class2.java中分别编译,然后运行Class2类。
//Intsort.java文件
public class Intsort {
public String sort(int a, int b){
if (a>b) return a+" "+b;
else return b+""+a;
}
public String sort(int a, int b, int c){
int swap;
if (a<b) { swap=a; a=b; b=swap;}
if (a<c) { swap=a; a=c; c=swap;}
if (b<c) { swap=b; b=c; c=swap;}
return a+" "+b+" "+c;
}
public String sort(int arr[]){
String s=" ";
int swap;
for(int i=0; i<arr.length; i++)
for(int j=0; j<arr.length-1; j++)
if(arr[j]>arr[j+1])
{ swap=arr[j+1]; arr[j+1]=arr[j]; arr[j]=swap;}
for(int i=0; i<arr.length; i++)
s=s+arr[i]+" ";
return s;
}
}
//Class2.java文件
import java.applet.Applet;
import java.awt.Graphics;
public class Class2 extends Applet {
Intsort s = new Intsort();
public void paint(Graphics g){
int a=30, b=12, c=40;
int arr[]={34,8,13,38,94,2,4,39,57};
g.drawString("两个数的排序结果:"+s.sort(a,b),30,30);
g.drawString("三个数的排序结果:"+s.sort(a,b,c) ,30,60);
g.drawString("数组的排列结果:"+s.sort(arr), 30 , 90 );
}
}
下面是我给你改的程序,Intsort和Class2两个类,要在Intsort.java和Class2.java中分别编译,然后运行Class2类。
//Intsort.java文件
public class Intsort {
public String sort(int a, int b){
if (a>b) return a+" "+b;
else return b+""+a;
}
public String sort(int a, int b, int c){
int swap;
if (a<b) { swap=a; a=b; b=swap;}
if (a<c) { swap=a; a=c; c=swap;}
if (b<c) { swap=b; b=c; c=swap;}
return a+" "+b+" "+c;
}
public String sort(int arr[]){
String s=" ";
int swap;
for(int i=0; i<arr.length; i++)
for(int j=0; j<arr.length-1; j++)
if(arr[j]>arr[j+1])
{ swap=arr[j+1]; arr[j+1]=arr[j]; arr[j]=swap;}
for(int i=0; i<arr.length; i++)
s=s+arr[i]+" ";
return s;
}
}
//Class2.java文件
import java.applet.Applet;
import java.awt.Graphics;
public class Class2 extends Applet {
Intsort s = new Intsort();
public void paint(Graphics g){
int a=30, b=12, c=40;
int arr[]={34,8,13,38,94,2,4,39,57};
g.drawString("两个数的排序结果:"+s.sort(a,b),30,30);
g.drawString("三个数的排序结果:"+s.sort(a,b,c) ,30,60);
g.drawString("数组的排列结果:"+s.sort(arr), 30 , 90 );
}
}
追问
但是我感觉我的编程没什么错误的啊,为什么总是编译不成功。请指教~~
追答
一、你不应该在Intsort类里建立内部类IntSort,你如果要继承可以用抽象类。
二、你的两个for循环for(int i=0; i<=arr.length; i++)和for(int j=0; j<=arr.length-1; j++)造成了数组越界,应该改成
for(int i=0; i<arr.length; i++) 和 for(int j=0; j<arr.length-1; j++)
三、IntSort s = new IntSort();调用的是内部类,应该改成Intsort s = new Intsort();
展开全部
public class Intsort {
class IntSort {
这类里面不能有重名啊 建议先看看java基础,到网上找视频 学学语法 然后在开发一些小程序 祝你成功
class IntSort {
这类里面不能有重名啊 建议先看看java基础,到网上找视频 学学语法 然后在开发一些小程序 祝你成功
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您好,可能是您重名的方法太多了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询