当前位置: 代码迷 >> Java相关 >> [原创]求助:大家给我看看这个程序,谢谢!
  详细解决方案

[原创]求助:大家给我看看这个程序,谢谢!

热度:70   发布时间:2005-08-28 21:17:00.0
[原创]求助:大家给我看看这个程序,谢谢!
//使用顺序查找法查找数组中的元素

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页,运行以后发觉不对,所以就来发帖了。 还望各位能够帮忙修改下这个程序,万分感激!
俺觉得还是看一些视频教程,那样直观一些
----------------解决方案--------------------------------------------------------
  相关解决方案