黑马程序员技术交流社区

标题: 求高手指错,关于函数的小问题。(已搞定) [打印本页]

作者: 曾_强    时间: 2012-4-30 00:43
标题: 求高手指错,关于函数的小问题。(已搞定)
本帖最后由 jiyixuan 于 2012-4-30 08:08 编辑


//查找5,有5:输出"有5,排在数组中的第几位";没有5,输出“没有5”。

class FindoutFive

{
        public static void main(String[] args)
        {
                int[] data = { 1, 2, 5, 443, 41 };
                for (int i = 0; i < data.length; i++)
                {
                        if (data == 5)
                        {
                                System.out.println("有5,排在数组中的第" + (i+1)+"位");
                                return;
                        }
               
                System.out.println("没有5");
                }
        }
}


运行结果为:
没有5
没有5
有5,排在数组的第3位;

可是我只想输出5,或者只输出没有5,请高手指错呀。









作者: 贾联国    时间: 2012-4-30 00:57
本帖最后由 贾联国 于 2012-4-30 01:01 编辑

如果学到集合,用集合最方便,没有的话就只能将就用这个代码了:
  1. class FindFive

  2. {
  3. public static void main(String[] args)
  4. {
  5. int[] data = { 1, 2, 5, 443, 41 };
  6. boolean b= true;
  7. for (int i = 0; i < data.length; i++)
  8. {

  9. if (data[i] == 5)
  10. {
  11. System.out.println("有5,排在数组中的第" + (i+1)+"位");
  12. b =false;
  13. return;
  14. }


  15. }
  16. if (b)
  17. {
  18. System.out.println("没有5");

  19. }
  20. }
  21. }


复制代码

作者: 杨威    时间: 2012-4-30 02:16
  1. class FindoutFive

  2. {
  3. public static void main(String[] args)
  4. {
  5. int[] data = { 1, 2, 5, 443, 41 };
  6. for (int i = 0; i < data.length; i++)
  7. {
  8. /*
  9. 首先,之所以在“有5”前面还输出了两次“没有5”是因为在满足下面的data[i]==5之前
  10. 的判断中,对于data[0]=1和data[1]=2的两种不满足if中条件的语句后都运行了语句
  11. System.out.println("没有5");对于你想要的结果其实将语句System.out.println("没有5");
  12. 注释掉就可以了。
  13. */
  14. if (data[i] == 5)
  15. {
  16. System.out.println("有5,排在数组中的第" + (i+1)+"位");
  17. return;
  18. }

  19. //System.out.println("没有5");
  20. }
  21. }
  22. }
复制代码
解答在代码的注释部分,比较详细吧?

作者: 曾_强    时间: 2012-4-30 08:08
哦啦,thanks anyway。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2