上次去面试的试题,通过接口来实现多次计算两个数字之和,两个数字从键盘输入,然后使用javadoc产生html文档!
代码如下:
/**
 *找程序错误
 *错误1:
 *错误原因:
 *更正:
 *错误n:
 *错误原因:
 *更正:
*/
public class Test_Add {
  static int ARRAY_MAX_VALUE = 10;
  static int ADD_XY_COUNT = 10000;
  int x,y,z;
  public static void main(String[] args) {
    for(int i=0;i<ADD_XY_COUNT;i++){
      byte[] number1 = new byte[ARRAY_MAX_VALUE];
      byte[] number2 = new byte[ARRAY_MAX_VALUE];
      char[] c = new char[ARRAY_MAX_VALUE];
      /* 读第一个数 */
    
      System.in.read(number1);
      c = (char)number1;
      System.out.println("number1 = " + c);
      x = number1;
      System.out.println("x = " + x);
      /* 读第二个数 */
      System.in.read(number2);
      c = (char)number2;
      System.out.println("number2 = " + c);
      y = number2;
      System.out.println("y = " + y);
      /* 计算X+Y */
      AddXY addxy = new AddXY();
      z = addxy.AddXY(x,y);
      System.out.println(" x + y = " + z);
    }
  }
}public class AddXY implements TestInterface {
  int z;
  public int AddXY(int x,int y){
    z = x + y;
    return z;
  }
}public interface TestInterface {
  int AddXY(int x,int y);
}我只挑出了一个错误,它把接口里面写了实现的方法了,其他的没找到!郁闷!

解决方案 »

  1.   

    c = (char)number1;
    c = (char)number2;x = number1;
    y = number2;
    z = addxy.AddXY(x,y);
      

  2.   

    IO操作会产生IOException,这里没有进行处理
      

  3.   

    楼上wuditata是把错误指出来了么?
    应该怎么改正呢?
    还有谁有什么高建?
    我在线等呢!这里都是菜鸟么???不会吧,我是慕名而来的,不要让我失望!
      

  4.   

    一个文件里不能有多个public的类和接口
      

  5.   

    实现类的为什么把z写成字段,、
    这个没有什么道理。
    整个程序看起不,不像是JAVA。
    更像C或者什么的。如果用JAVA从键盘读入数字这么麻烦,
    人都会死掉的。
      

  6.   

    1.
    number1是一个数组 c也是一个数组,只能对数组中的元素进行强制转换
    不能对整个数组进行强制转换,强制转换只是对某个值(元素)来说的
    c = (char)number1;这是不行的
    2.一个.java文件里只能有一个public类,这里有三个了其中一个是接口
    3.int x ,y都是非static的,main方法是static的,static的方法不能引用非static的
    但非static的可以引用static的。
    4.在System.in.read(number1);
    这里可能抛出异常
    楼主所说的:它把接口里面写了实现的方法了,是什么意思,这个接口并没有实现方法,只是声明方法啊,这是对的,AddXY这个类来实现了这个接口这里还要稍微注意一点的就是:
    AddXY addxy = new AddXY();
          z = addxy.AddXY(x,y);
    第一个AddXY()是构造方法
    第二个AddXY(x,y)是实现了接口的方法
      

  7.   

    for 循环有问题
    题目不是要输入多个值 只要扩住这里就够了
    for(int i=0;i<ADD_XY_COUNT;i++){
          z = addxy.AddXY(x,y);
          System.out.println(" x + y = " + z);
    }
      

  8.   

    1、 static int ARRAY_MAX_VALUE = 10;
      static int ADD_XY_COUNT = 10000;
    前面加final吧..这里是想作为常量吧.虽然这样也没错。但就是看不惯!
    2、c = (char)number1;//char是数组诶。。能这么做的吗?
    3、多个public了。
    另外,AddXY没错。因为在定义AddXY(int x,int y)是前面有个返回值int.所以这个不是构造方法。只是简单的方法而已。并且实现了接口。
      

  9.   

    byte[] number1 = new byte[ARRAY_MAX_VALUE];
          byte[] number2 = new byte[ARRAY_MAX_VALUE];
          char[] c = new char[ARRAY_MAX_VALUE];
    应该将ARRAY_MAX_VALUE等改为常量,即final的