[原创]求助:大家给我看看这个程序,谢谢!
//使用顺序查找法查找数组中的元素import java.io.*;
import java.applet.Applet;
public class FindSort
{
public static void main(String[] args) throws IOException
{
BufferedInputStream in = new BufferedInputStream(System.in);
BufferedOutputStream out = new BufferedOutputStream(System.out);
int y[] = { 2, 4, 5, 7, 9, 0};
int a;
byte b[] = new byte[2];
System.out.println("请输入要查询的数字: ");
a = in.read(b, 0, 2);
boolean findOut = false;
for(int i = 0; i < 6; i++)
{
if(y[i] == a)
{
findOut = true;
break;
}
}
if(findOut == false)
{
out.write(b, 0, 1);
System.out.println("没有找到!");
out.flush();
}
else
System.out.println("找到!");
}
};
/*----问题:无论我输入什么,结果总是显示为“找到”,请问这个是什么问题,谢谢各位了!---*/
----------------解决方案--------------------------------------------------------
原因初步定位在in.read方法上,它根本没有读入你所输入的字符。因此出错了。由于是读入byte因此他返回的是字符对应的ascii码。也就是说你必须把他转换成对应的字符才行。另外由于你使用的是read(byte[] byte,int offset,int len)这个方法,所以还有另外一个问题,就是这个方法返回的值是你读取的byte个数。你的字节数组定义的是两个大小因此返回值永远是2。你的y数组里又恰好有2这个数,所以永远为真。至于改进的方法有很多,建议你自己思考一下。或者等着kai的回答吧,呵呵
[此贴子已经被作者于2005-8-28 23:58:18编辑过]
----------------解决方案--------------------------------------------------------
谢谢J湖散人!初学JAVA,根本不知道read(byte[] byte, int offset, int len)这个方法的使用。这个例子是引自科学出版社的《精通JAVA 2 》第96页,运行以后发觉不对,所以就来发帖了。
还望各位能够帮忙修改下这个程序,万分感激!
----------------解决方案--------------------------------------------------------
import java.io.*;
public class FindSort
{
public static void main(String[] args) throws IOException
{
int y[] = { 2, 4, 5, 7, 9, 0};
int a;
BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
String input;
System.out.println("请输入要查询的数字: ");
try
{
input = reader.readLine();
a = Integer.parseInt( input );
for(int i = 0; i<6; i++)
{
if(y[i] == a)
{
System.out.println("找到!");
return ;
}
}
System.out.println("没找到!");
}
catch ( IOException e ) { e.printStackTrace(); }
}
}
----------------解决方案--------------------------------------------------------
现在的书也真是烂,建议买点有名气的书看看。另外那个方法怎么用和初学没有很大关系,建议你学会自己看API文档,很快就会发现这个方法怎么用并且知道程序中用这个方法有误。至于英语的问题么,很多人已经谈论过了,去学好吧,不要因为英语的困难而让你却步
[此贴子已经被作者于2005-8-29 7:17:17编辑过]
----------------解决方案--------------------------------------------------------
楼主的建议不错,顶。
遇到不懂得问题,在这里我们讨论解决。
----------------解决方案--------------------------------------------------------
以下是引用magic475在2005-8-29 0:14:36的发言:
谢谢J湖散人!初学JAVA,根本不知道read(byte[] byte, int offset, int len)这个方法的使用。这个例子是引自科学出版社的《精通JAVA 2 》第96页,运行以后发觉不对,所以就来发帖了。
还望各位能够帮忙修改下这个程序,万分感激!
俺觉得还是看一些视频教程,那样直观一些 ----------------解决方案--------------------------------------------------------