Java编程练习题-安装路灯

输入公路的长度length,路灯个数number,随机生成路灯的位置,找到一对距离最长的路灯,在这对路灯中间安装一个新路灯,输出距离最远的两个路灯位置和距离,以及新路灯位置

package com.lll;

import java.util.Random;
import java.util.Scanner;

/**
 * 输入公路的长度length,路灯个数number,随机生成路灯的位置,找到一对距离最长的路灯,在这对路灯中间安装一个新路灯
 * 输出距离最远的两个路灯位置,以及新路灯位置
 */
public class StreetLightTest {
    public static void main(String[] args) {
        //程序输入
        Scanner sc = new Scanner(System.in);
        int length = sc.nextInt();
        int number = sc.nextInt();

        //生成个数为number的[0,length]范围的随机路灯位置,去重
        int[] arr = new int[number];
        Random random = new Random();
        for (int i = 0; i < number; i++) {
            //生成0-length的随机数
            arr[i] = random.nextInt(length+1);
            for(int j=0;j<i;j++){
                // 通过比较数组存在中的数据,如果数据中有相同的数据,退出内层循环并且i--,就再重新生成一个随机数据,直到在数组中没有相同数据
                if(arr[i]==arr[j]){
                    i--;
                    break;
                }
            }
        }

        //冒泡排序,逆序
        for (int i = 0; i < arr.length; i++) {
            for (int j = arr.length - 1; j > i; j--) {
                int temp = arr[i];
                if (arr[i] < arr[j]) {
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }

        //输出生成并排序后的位置数组
        for (int i = 0; i < number; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();

        //循环查找相邻间距最大的两个路灯,以及距离
        int max = 0;
        int nearLight = 0;
        int farLight = 0;
        for (int i = 1; i < number; i++) {
            int diff = arr[i-1] - arr[i];
            if (diff > max){
                max = diff;
                nearLight = arr[i];
                farLight = arr[i-1];
            }
        }

        //输出最后结果
        System.out.println("距离最远的两个路灯是"+nearLight+","+farLight+",距离是"+max);
        System.out.println("新路灯的位置是"+(double)max/2);
    }

}

这段 Java 代码是一个寻找最远路灯并在其之间安装新路灯的程序。

输入部分:

  1. 输入部分:

    Scanner sc = new Scanner(System.in);
    int length = sc.nextInt();
    int number = sc.nextInt();
    

    这部分使用 Scanner 从控制台读取输入,获取了公路的长度 length 和路灯的数量 number

  2. 随机生成路灯位置:

    int[] arr = new int[number];
    Random random = new Random();
    for (int i = 0; i < number; i++) {
        arr[i] = random.nextInt(length + 1);
        for (int j = 0; j < i; j++) {
            if (arr[i] == arr[j]) {
                i--;
                break;
            }
        }
    }
    

    这部分随机生成了 number 个路灯的位置并存储在数组 arr 中,要求路灯位置不重复。

  3. 排序路灯位置:

    for (int i = 0; i < arr.length; i++) {
        for (int j = arr.length - 1; j > i; j--) {
            int temp = arr[i];
            if (arr[i] < arr[j]) {
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    

    这部分使用冒泡排序对 arr 数组进行逆序排序,以便后续寻找相邻路灯之间的最大距离。

  4. 输出排序后的路灯位置:

    for (int i = 0; i < number; i++) {
        System.out.print(arr[i] + " ");
    }
    System.out.println();
    

    这部分输出排序后的路灯位置。

  5. 寻找最远的相邻路灯和计算距离:

    int max = 0;
    int nearLight = 0;
    int farLight = 0;
    for (int i = 1; i < number; i++) {
        int diff = arr[i - 1] - arr[i];
        if (diff > max) {
            max = diff;
            nearLight = arr[i];
            farLight = arr[i - 1];
        }
    }
    

    这部分遍历数组找到相邻路灯之间距离最大的一对路灯,并记录下距离和这对路灯的位置。

  6. 输出结果:

    System.out.println("距离最远的两个路灯是" + nearLight + "," + farLight + ",距离是" + max);
    System.out.println("新路灯的位置是" + (double) max / 2);
    

    这部分输出找到的最远的两个路灯位置以及它们之间的距离,还输出了新路灯应该安装的位置。

总体而言,这个程序通过随机生成路灯位置,寻找相邻路灯间最大距离,然后在它们之间安装新路灯,最后输出结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Ale-阿乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值