上次去面试的试题,通过接口来实现多次计算两个数字之和,两个数字从键盘输入,然后使用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:
*错误原因:
*更正:
*错误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);
}我只挑出了一个错误,它把接口里面写了实现的方法了,其他的没找到!郁闷!
c = (char)number2;x = number1;
y = number2;
z = addxy.AddXY(x,y);
应该怎么改正呢?
还有谁有什么高建?
我在线等呢!这里都是菜鸟么???不会吧,我是慕名而来的,不要让我失望!
这个没有什么道理。
整个程序看起不,不像是JAVA。
更像C或者什么的。如果用JAVA从键盘读入数字这么麻烦,
人都会死掉的。
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)是实现了接口的方法
题目不是要输入多个值 只要扩住这里就够了
for(int i=0;i<ADD_XY_COUNT;i++){
z = addxy.AddXY(x,y);
System.out.println(" x + y = " + z);
}
static int ADD_XY_COUNT = 10000;
前面加final吧..这里是想作为常量吧.虽然这样也没错。但就是看不惯!
2、c = (char)number1;//char是数组诶。。能这么做的吗?
3、多个public了。
另外,AddXY没错。因为在定义AddXY(int x,int y)是前面有个返回值int.所以这个不是构造方法。只是简单的方法而已。并且实现了接口。
byte[] number2 = new byte[ARRAY_MAX_VALUE];
char[] c = new char[ARRAY_MAX_VALUE];
应该将ARRAY_MAX_VALUE等改为常量,即final的