黑马程序员技术交流社区

标题: java代码改错题 大家看看吧 [打印本页]

作者: 张甲甲    时间: 2013-5-27 10:38
标题: java代码改错题 大家看看吧
本帖最后由 张甲甲 于 2013-6-4 14:22 编辑

1.
abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}

2.
public class Something {
void doSomething () {
private String s = "";
int l = s.length();
}
}


3.
abstract class Something {
private abstract String doSomething ();
}


4.
public class Something {
public int addOne(final int x) {
return ++x;
}
}

5.
public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}

6.
class Something {
int i;
public void doSomething() {
System.out.println("i = " + i);
}
}

7.
class Something {
final int i;
public void doSomething() {
System.out.println("i = " + i);
}
}

8.
public class Something {
public static void main(String[] args) {
Something s = new Something();
System.out.println("s.doSomething() returns " + doSomething());
}
public String doSomething() {
return "Do something ...";
}
}

9.
此处,Something类的文件名叫OtherThing.java
class Something {
private static void main(String[] something_to_do) {
System.out.println("Do something ...");
}
}

10.
interface A{
int x = 0;
}
class B{
int x =1;
}
class C extends B implements A {
public void pX(){
System.out.println(x);
}
public static void main(String[] args) {
new C().pX();
}
}

作者: 张旺达    时间: 2013-5-27 10:51
有答案不咯~~{:soso_e144:}
作者: FantasticPie    时间: 2013-5-27 11:55
本帖最后由 FantasticPie 于 2013-5-27 12:35 编辑

1.  抽象方法是由子类来实现的,因此不能有方法的具体实现。去掉第三行的{};


2.  doSomething()这个方法中定义的变量是私有变量,不能加修饰符,所以要去掉String s 前的private要去掉。


3.  一个抽象方法是由子类实现的,子类不能访问父类的私有成员。而这个抽象方法被private修饰,子类就访问不了。所以去掉private修饰符。


4.  addOne方法中是一个final修饰的变量,被final修饰的变量只能被赋值一次,不能在方法体参与++x运算来改变它的值。因此有两种修改方法:去掉final或者直接return x;


5.  没有发现错误


6.  没有发现错误


7.  final int i 没有初始化 修改为final int i = 0(任何一个可以被赋为int的数值)或者去掉final

8.  System.out.println("s.doSomething() returns " + doSomething());这一句里不能直接调用非静态的doSomthing()作为结果来打印。修改为System.out.println("s.doSomething()     
     returns " + s.doSomething());或者把doSomthing设为static


9.  在一个类文件名中只能有一个主方法(main())去掉main()方法的static修饰符


10. 在class C extends B implements A {
        public void pX(){
        System.out.println(x);//在父类中没有明确指出x属于接口还是B类的x.
    }

    修改为System.out.println(A.x);或者System.out.println(new B().x);
作者: 神之梦    时间: 2013-5-27 12:26
FantasticPie 发表于 2013-5-27 11:55
1.  抽象方法是由子类来实现的,因此不能有方法的具体实现。去掉第三行的{};

好犀利啊,
第9题好像也可以编译和运行
作者: FantasticPie    时间: 2013-5-27 12:34
本帖最后由 FantasticPie 于 2013-5-27 12:38 编辑
神之梦 发表于 2013-5-27 12:26
好犀利啊,
第9题好像也可以编译和运行

关键不在这儿,它定义的文件类名是OtherThing.java,因此主函数可以在OtherThing类里面或者不在这个类里面但绝对不能在其他的类里面
作者: 神之梦    时间: 2013-5-27 12:36
FantasticPie 发表于 2013-5-27 12:34
关键不在这儿,它定义的文件类名是OtherThing.java,因此主函数应该写在OtherThing.java类里面 ...

我刚试了下,一个.java文件里面可以有两个主函数的不同两个类,求解
作者: FantasticPie    时间: 2013-5-27 12:48
神之梦 发表于 2013-5-27 12:36
我刚试了下,一个.java文件里面可以有两个主函数的不同两个类,求解

此处,Something类的文件名叫OtherThing.java
class Something {
private static void main(String[] something_to_do) {
System.out.println("Do something ...");
}
}
作者: FantasticPie    时间: 2013-5-27 12:58
神之梦 发表于 2013-5-27 12:36
我刚试了下,一个.java文件里面可以有两个主函数的不同两个类,求解

糟糕,我也石化了……




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2