尚学堂Java第七章编码题

尚学堂Java第七章编码题

编码题一

题目: 数组查找操作:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出“Yes”,不包含就打印出“No”。

(这题设置了让用户自己输入数组长度以及内容,有个奇怪的问题没有解决,要是我使用nextLine来获取输入的数据时,会跳过内容,导致整个程序都有问题。不知是否有前辈解惑,这里我用了nextInt或next来避免这个问题的)。

package dylan.linger.array.work;

import java.util.Arrays;
import java.util.Scanner;
/**
 * @author Linger
 * 查找数组内容
 */

public class CheckElement {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入数组的长度:");
        int i = scanner.nextInt();
        String[] array = new String[i];//设置数组长度
        int j=0;//数组索引值
        int cyc=0;//初始化判断
        boolean flag = true;
        do {
            if(j<array.length){
                System.out.print("请输入数组中的内容:");
                array[j] = scanner.next();
                j++;
                if(j<i) {
                    System.out.print("请问是否继续输入1=>是/0=>否:");
                    cyc = scanner.nextInt();

                    if(cyc != 1){//如若不想继续输入,后面内容设为空
                        for(int l=j;l<array.length;l++){
                            array[l] = "";
                        }
                    }
                }
            }else{
                break;
            }
        } while (cyc==1);

        System.out.print("请输入要查询的单词:");
        String input = scanner.next();

        for(int k=0;k<array.length;k++){
            if(array[k].equals(input)){
                System.out.println("您查询的单词在数组中的第"+(k+1)+("位!"));
                flag = false;
            }
        }
        if(flag){
            System.out.println("在数组中未查询到此单词!");
        }
    }
}

结果是这样的:
在这里插入图片描述

编码题二

题目: 获取数组最大值和最小值操作:利用Java的Math类的random()方法,编写函数得到0到n之间的随机数,n是参数。并找出产生50个这样的随机数中最大的、最小的数,并统计其中>=60的有多少个。
提示:使用 int num=(int)(n*Math.random());获取随机数。
(加了让用户确定最大值以及生成个数。)

package dylan.linger.array.work;

import java.util.Arrays;
import java.util.Scanner;
/**
 * @author Linger
 * 查询最大最小值
 */

public class MaxMin {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.print("请确定随机数的上限为:");
        int max = scanner.nextInt();
        System.out.print("请确定生成随机数的个数:");
        int quantity = scanner.nextInt();

        int[] arr = new int[quantity];
        int count = 0;//计算大于60的个数

        for (int i=0;i<quantity;i++) {
            arr[i]= (int) (max * Math.random());
            if (arr[i]>=60){
                count++;
            }
        }
        Arrays.sort(arr);
        System.out.println("最大值是:"+arr[quantity-1]);
        System.out.println("最小值是:"+arr[0]);
        System.out.println("大于60的有:"+count+"个。");
        System.out.println(Arrays.toString(arr));
    }
}

运行后:
在这里插入图片描述

编码题三

题目 数组逆序操作:定义长度为10的数组,将数组元素对调,并输出对调前后的结果。
思路:把0索引和arr.length-1的元素交换,把1索引和arr.length-2的元素交换……
只要交换到arr.length/2的时候即可。
(这题简单,但不知道是否有更加优的方法呢?)

package dylan.ling.array.work;

import java.util.Arrays;

/**
 * @author DYLAN
 * 数组内容对调
 */

public class ArraySwop {
    public static void main(String[] args){
        int[] a = {1,2,3,4,5,6,7,8,9,0};
        int temp;
        System.out.print("原数组为:");
        System.out.println(Arrays.toString(a));

        for(int i=0;i<a.length/2;i++){
            temp = a[i];
            a[i] = a[a.length-1-i];
            a[a.length-1-i] = temp;
        }
        System.out.println("交换后数组为:");
        System.out.println(Arrays.toString(a));
    }
}

运行结果:
在这里插入图片描述

更新你的思想,你就能获得新生!
———— by Linger

发布了4 篇原创文章 · 获赞 0 · 访问量 142

猜你喜欢

转载自blog.csdn.net/dingdang_miao/article/details/105130779
今日推荐