| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 573 人关注过本帖
标题:[原创]求助:大家给我看看这个程序,谢谢!
只看楼主 加入收藏
magic475
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2005-1-14
收藏
 问题点数:0 回复次数:6 
[原创]求助:大家给我看看这个程序,谢谢!
//使用顺序查找法查找数组中的元素

import *;

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("找到!");

    }

};

/*----问题:无论我输入什么,结果总是显示为“找到”,请问这个是什么问题,谢谢各位了!---*/

2005-08-28 21:17
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 
原因初步定位在in.read方法上,它根本没有读入你所输入的字符。因此出错了。由于是读入byte因此他返回的是字符对应的ascii码。也就是说你必须把他转换成对应的字符才行。另外由于你使用的是read(byte[] byte,int offset,int len)这个方法,所以还有另外一个问题,就是这个方法返回的值是你读取的byte个数。你的字节数组定义的是两个大小因此返回值永远是2。你的y数组里又恰好有2这个数,所以永远为真。至于改进的方法有很多,建议你自己思考一下。或者等着kai的回答吧,呵呵

[此贴子已经被作者于2005-8-28 23:58:18编辑过]



相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2005-08-28 23:54
magic475
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2005-1-14
收藏
得分:0 
谢谢J湖散人!初学JAVA,根本不知道read(byte[] byte, int offset, int len)这个方法的使用。这个例子是引自科学出版社的《精通JAVA 2 》第96页,运行以后发觉不对,所以就来发帖了。
还望各位能够帮忙修改下这个程序,万分感激!
2005-08-29 00:14
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
import *;

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(); }
  }
}

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-08-29 03:06
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 
现在的书也真是烂,建议买点有名气的书看看。另外那个方法怎么用和初学没有很大关系,建议你学会自己看API文档,很快就会发现这个方法怎么用并且知道程序中用这个方法有误。至于英语的问题么,很多人已经谈论过了,去学好吧,不要因为英语的困难而让你却步

[此贴子已经被作者于2005-8-29 7:17:17编辑过]



相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2005-08-29 07:08
Justin_free
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-8-27
收藏
得分:0 
楼主的建议不错,顶。
遇到不懂得问题,在这里我们讨论解决。

天道酬勤---成非偶然,败非命运!!如果你因错过太阳而流泪,那么你也会错过群星!
2005-08-29 08:15
无根泉
Rank: 2
等 级:新手上路
威 望:4
帖 子:853
专家分:0
注 册:2004-11-4
收藏
得分:0 
以下是引用magic475在2005-8-29 0:14:36的发言: 谢谢J湖散人!初学JAVA,根本不知道read(byte[] byte, int offset, int len)这个方法的使用。这个例子是引自科学出版社的《精通JAVA 2 》第96页,运行以后发觉不对,所以就来发帖了。 还望各位能够帮忙修改下这个程序,万分感激!
俺觉得还是看一些视频教程,那样直观一些

我很菜,但我很努力!
2005-08-29 08:39
快速回复:[原创]求助:大家给我看看这个程序,谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019289 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved