薛平贵吐血:是JAVA高手的进来拼

来源:百度文库 编辑:高考问答 时间:2024/04/30 18:27:07
下面有两个程序,第一个编译出错,请问错在哪啊?

public class F{
public static void main(String [] args){
B b = new B();
b.f();
}
class A{
int f(){
System.out.println("A");
}
}
class B extends A{
int f(){
super.f();
System.out.println("B");
}
}
}

第二个我不明白设一个b是干嘛的:
public class D{
public static void main(String[] args){
int x[] = {12,4,6,7,98,0,7,5,3,2
};
for(int i=0;i<10;i++){
System.out.println(x[i]);
};
int m;
for(int i=0;i<10;i++){

boolean b = false;
for(int j = 0;j<9;j++){

if(x[j]>x[j+1]){
m=x[j];
x[j] = x[j+1];
x[j+1] = m;
b = true;
}
}
if(!b){
System.out.println(i);
break;
}
System.out.println(" ");
for(i = 0;i<10;i++){
System.out.println(x[i]);
};

}
}
}

高手肯定觉得这个简单啦,别笑我,谢谢谢谢~

第一个改为:

class A{
void f(){
System.out.println("A");
}
}
class B extends A{
void f(){
super.f();
System.out.println("B");
}
}

public class F
{

public static void main(String [] args){
B b = new B();
b.f();
}
}

第二个写的太烂!
b啥用也没有。

class F中的main方法有static修饰,也就是说是一种类方法或者叫静态方法,他们是类的一部分,而不属于具体的哪一个对象,所以不可以调用实例方法,而类B中的方法f是一个实例方法,所以会出现调用失败。
你定义的子类实际上相当于类F的成员,如果你把类B定义在F之外的话,多半不会出现这个问题。

第二题中,b使用来判断是否进行过交换的,如果在一次循环中不再有过交换,那么说明排序已经完成了,也就可以退出循环进行显示了。

头一个用了两个内置类,而在MAIN中是无法访问的,所以有错.
第二个,b就是控制循环的.
建议你再研究研究JAVA,这种问题估计一时也说不明白.

第一个没看明白,我不太懂java语法,如果按c#的来说,应该在B类的 int f()前加new关键字,不知java怎么安排。

第二个应该是一个冒泡排序,如果是真表示小循环上当前数是否需要排序。

就是你的大括号对应的太不整齐了.好好整理一下再研究吧.
把每个结尾的括号加上注释,否则连自己都没法看了.
哪有这么起名字的,A,B,C没有意义.

1、b.f();错了,

2、b = true;没有他IF语句不执行