儿儿玛粉 2022-07-24 23:53 采纳率: 50%
浏览 109
已结题

JAVA中遍历数组出现问题,但找不到问题所在

public static void main(String[] args) {
int[] a = {124, 1, 9, 38, 79, 66, 12, 99, 125}; //定义数组
int[] sort = sort(a); //利用冒泡排序后,返回排序后的数组
System.out.println("该数组按降序排后为:"+Arrays.toString(a)); //输出排序后的数组
Scanner scanner = new Scanner(System.in); //创建一个接受用户键盘的对象
System.out.println("请输入一个整数"); //提示用户输入自己需要确定的整数
int b = scanner.nextInt();
boolean flag =false; //通过flag判断该整数是否存在于该数组中
for(int i = 0; i < a.length-1; i++) { //对数组进行遍历,查看用户输入的整数是否存在
if (a[i] == b) {
flag = true;
break;
}

        if(flag){ //判断如果存在该整数,则输出存在否则不存在
            System.out.println("该整数存在于该数组中");
            break;
        }else{
            System.out.println("该整数不存在于该数组中");
            break;
        }
    }
    scanner.close(); //程序关闭

    }

public static int[] sort(int[]array) {
    int temp = 0; //定义一个中间变量
        //外层循环,判断循环多少次
    for (int i = 0; i < array.length - 1; i++) {
        //内层循环,因为每排序一次就会找出一个最大值和最小值,就减少了一次循环,所以j < arrays.length-i-1。
        for (int j = 0; j < array.length - 1 - i; j++) {
            if(array[j+1]>array[j]){ //两两比较,数大则交换位置
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }


        }

    }
    return  array;
}

}

这个代码有问题,出现的结果让我无法理解,麻烦各位帮助我看一下哪儿有问题

  • 写回答

4条回答 默认 最新

  • Roc-xb 后端领域优质创作者 2022-07-25 09:44
    关注

    修改之后的代码:
    你的代码存在两个问题:
    ①对循环遍历的临界点概念比较模糊,导致没有对数组进行完全遍历。
    ②逻辑结构理解不够清晰。

    package com;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            int[] a = { 124, 1, 9, 38, 79, 66, 12, 99, 125 }; // 定义数组
            int[] sort = sort(a); // 利用冒泡排序后,返回排序后的数组
            System.out.println("该数组按降序排后为:" + Arrays.toString(a)); // 输出排序后的数组
            Scanner scanner = new Scanner(System.in); // 创建一个接受用户键盘的对象
            System.out.println("请输入一个整数"); // 提示用户输入自己需要确定的整数
            int b = scanner.nextInt();
            boolean flag = false; // 通过flag判断该整数是否存在于该数组中
            for (int i = 0; i < a.length; i++) { // 对数组进行遍历,查看用户输入的整数是否存在
                if (a[i] == b) {
                    flag = true;
                    break;
                }
    
            }
            System.out.println(flag);
            if (flag) { // 判断如果存在该整数,则输出存在否则不存在
                System.out.println("该整数存在于该数组中");
            } else {
                System.out.println("该整数不存在于该数组中");
            }
            scanner.close(); // 程序关闭
    
        }
    
        public static int[] sort(int[] array) {
            int temp = 0; // 定义一个中间变量
            // 外层循环,判断循环多少次
            for (int i = 0; i < array.length - 1; i++) {
                // 内层循环,因为每排序一次就会找出一个最大值和最小值,就减少了一次循环,所以j < arrays.length-i-1。
                for (int j = 0; j < array.length - 1 - i; j++) {
                    if (array[j + 1] > array[j]) { // 两两比较,数大则交换位置
                        temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                    }
    
                }
    
            }
            return array;
        }
    
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月3日
  • 已采纳回答 7月26日
  • 创建了问题 7月24日

悬赏问题

  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站