JavaSSD3_实验一<<一维数组>>

目录

 一、实验目的

 二、实验内容(包含代码及运行结果)

 三. 心得体会


 一、实验目的

学习一维数组的用法、方法的定义和调用。

 

 二、实验内容(包含代码及运行结果)

   1. (P236, 7.3)编写程序,读取1-100之间的整数,然后计算每个数出现的次数。假定输入是以0结束的。以下是程序运行示例:

输入1-100之间的整数:2  5  5  4  3  23  2  0 [回车]

2 出现 2 次

3 出现 1 次

4 出现 1 次

5 出现 2 次

23 出现 1 次

 

代码:

import java.util.Scanner;


public class Program1 {
    public static void main(String[] args) {
        Scanner input  = new Scanner(System.in);
        int[] num = new int[100];
        System.out.println("请输入1-100之间的整数(输入0结束):");
        //一边输入,一边记录个数
        while(true)
        {
            int a = input.nextInt();
            if(a < 0 || a > 100){
                System.out.println("您输入的"+a+"不符合要求!");
                continue;
            }
            if(a != 0){
                num[a-1]++;
            }else
                break;
        }

        //用foreach循环输出
        int count = 0;
        for (int e:num) {
            count++;
            if(e != 0)
                System.out.println(count+"出现了"+e+"次");
        }
    }
}

运行结果及分析:

测试数据1

输入实验给定的数据,程序运行正确,结果如图1所示:

图1 实验2-1测试数据1的运行结果截图

 

测试数据2

输入临界数据“100”以及错误数据“200”“-1”,程序会提醒用户输入错误并剔除错误数据,实验结果如图2所示:

图2 实验2-1测试数据2运行结果

通过以上测试数据可知程序符合要求。

 


2. (P237,7.10)编写一个方法,求出整数数组中最小元素的下标。如果这样的元素个数大于1,则返回最小下标。使用下面的方法头:

public static int indexofSmallestElement (double[] array)

编写测试程序,提示用户输入10个数字,调用这个方法,返回最小元素的下标,然后显示这个下标值。

代码:

import java.util.Scanner;


public class Program2 {
    public static int indexofSmallestElement(double[] array){
        int ans=0;                              //存储数组中最小元素的下标
        double min=array[0];
        for (int i = 0; i < array.length; i++) {
            if(array[i] < min)
            {
                min = array[i];
                ans = i;
            }
        }
        return  ans;
    }
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double[] num = new  double[10];
        System.out.print("请输入十个数字:");

        for (int i = 0; i < 10; i++)
            num[i] = input.nextDouble();

        System.out.println("将这些数字存入数组,该数组中最小元素的下标为:"+indexofSmallestElement(num));


    }
}

测试数据1

 

程序直接返回最小元素在数组中的下标:9

 

测试数据2

如图,当输入的数字中最小元素的个数不止一个时,程序返回最小元素的最小下标:

由程序运行结果知,此程序完全符合要求。

 

 

 3. (P236,7.5)编写程序, 读入10个数并显示互不相同的数(即一个数出现多次,但仅显示一次)。提示,读入一个数,如果它是一个新数,则将它存储在数组中,如果该数已经在数组中,则忽略它。输入之后,数组包含的都是不同的数。以下是运行示例:

输入10个整数:1  2  3  2  1  6  3  4  5  2

互不相同的数为:1  2  3  6  4  5

代码展示:

import java.util.Scanner;


public class Program2 {
    public static int indexofSmallestElement(double[] array){
        int ans=0;                              //存储数组中最小元素的下标
        double min=array[0];
        for (int i = 0; i < array.length; i++) {
            if(array[i] < min)
            {
                min = array[i];
                ans = i;
            }
        }
        return  ans;
    }
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double[] num = new  double[10];
        System.out.print("请输入十个数字:");

        for (int i = 0; i < 10; i++)
            num[i] = input.nextDouble();

        System.out.println("将这些数字存入数组,该数组中最小元素的下标为:"+indexofSmallestElement(num));


    }
}

运行结果及分析:

测试数据1

输入题目给定数据,运行可得正确结果,运行结果如下图所示:

 

测试数据2

 

输入重复率大的十个数,程序仍可得到正确结果,如下图所示:

 

通过以上测试数据可知程序符合要求。


4.(P240,7.27)如果两个数组list1和list2内容相同,那么就说它们是相同的。使用下面的方法头编写一个方法,如果list1和list2是相同的,该方法就返回true:

public static boolean equal(int[ ] list1, int[ ] list2)

编写一个测试程序,提示用户输入两个整数数列,然后显示它们两个是否相同。以下是运行示例。注意输入的第一个数字表示数列中元素的个数。

提示:可考虑使用230-231页Arrays类提供的方法进行组合调用

输入list1: 5  2  5  6  6  1

输入list2: 5  5  2  6  1  6

这两个数列是相同的

输入list1: 5  5  5  6  6  1

输入list2: 5  2  5  6  1  6

这两个数列是不同的

代码: 


import java.util.Scanner;


public class Program4 {
    
    public static boolean equal(int[ ] list1, int[ ] list2){
        if(list1.length != list2.length)
            return false;
        java.util.Arrays.sort(list1);
        java.util.Arrays.sort(list2);
        for (int i = 0; i < list1.length; i++) {
            if(list1[i] != list2[i])
                return false;
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner input  = new Scanner(System.in);
        //输入
        System.out.println("请输入两个整数数列(先输入数列大小)");
        int size1,size2;
        System.out.print("输入list1的大小:");
        size1 = input.nextInt();
        int[] list1 = new int[size1];
        System.out.print("输入list1:");
        for (int i = 0; i < size1; i++) {
            list1[i] = input.nextInt();
        }
        System.out.print("输入list2的大小:");
        size2 = input.nextInt();
        int[] list2 = new int[size2];
        System.out.print("输入list2:");
        for (int i = 0; i < size2; i++) {
            list2[i] = input.nextInt();
        }

        if(equal(list1,list2))
            System.out.println("这两个数列是相同的!");
        else
            System.out.println("这两个数列是不同的!");

    }
}

  运行结果及分析:

测试数据1

输入题目给定测试数据1,运行可得正确结果,运行结果如下图所示:

测试数据2

输入题目给定测试数据2,运行可得正确结果,运行结果如下图所示:

测试数据3

当输入的两个数列大小不同时,程序仍可得正确结果

通过以上测试数据可知程序完全符合要求。



三. 心得体会

实验2-1:

   题目无其它特别要求,所以就开辟一个1大小为100的整型数组;然后运行正确,又考虑到容错性,于是又加了个判断,可以提醒用户输入的数据错误,并自动剔除错误数据。

 

实验2-2:

   题目给定数组大小,所以直接一个循环输入。刚开始本想用foreach循环进行输入,但发现运行错误,上网查了下得知:foreach循环遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改.后续改正即得正确结果

 

实验2-3:

在这个实验里,放了个小小的错误,就是在第二重循环中,把i和j给混淆了,检查代码发现错误后,程序运行即可得正确结果。日后两重循环尽量不再犯这种错误。

 

实验2-4:

判断两数组内容是否相同,第一想法就是java.util.Arrays 类中的java.util.Arrays.equals();但调试后发现这个方法判断的是要两个数组中的元素完全相同,包括了顺序,所以与题目要求不符合。那么就再用java.util.Arrays 类中的java.util.Arrays.sort()方法排序后再判断,问题就解决了。我充分感受到了Java的库中各种函数的方便,但要去使用的前提还是,还是得完全把每个方法的作用弄清楚,避免出错。

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
输入一个vector<vector<int>>数组,可以按照以下步骤进行操作: 1. 首先,包含所需的头文件,即#include <vector>和#include <iostream>。 2. 创建一个名为test的vector<vector<int>>变量,用于存储二维数组。 3. 创建一个名为v的vector<int>变量,用于存储每一行的元素。 4. 输入一个整数n,表示二维数组的大小。 5. 使用嵌套的for循环,外层循环控制行数,内层循环控制列数。循环次数都是n。 6. 在内层循环中,输入每个元素,并将其添加到v中。 7. 将v插入到test中。 8. 在输出之前,确保每次循环开始时都清除v中的元素,使用v.clear()。 9. 使用嵌套的for循环,外层循环控制行数,内层循环控制列数。循环次数都是n。 10. 在内层循环中,输出test[i][j]。 11. 输出每一行后,使用cout << endl;换行。 下面是一个示例代码: ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<vector<int>> test; vector<int> v; int n, temp; cin >> n; // 输入 for (int i = 0; i < n; i++) { v.clear(); // 清除v中的元素 for (int j = 0; j < n; j++) { cin >> temp; v.push_back(temp); } test.push_back(v); } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << test[i][j << " "; } cout << endl; } return 0; } ``` 这段代码会先输入一个整数n,然后按照n行n列的形式输入二维数组的元素。最后,按照原有的二维数组形式输出。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [二维vector的输入](https://blog.csdn.net/u013068755/article/details/70198924)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [C++ Vector用法详解](https://download.csdn.net/download/weixin_38655347/14874417)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值