JAVA 练习题(2)

2023-11-09

从键盘输入8个整数存放在一个数组中,然后将奇数和偶数分别存入到两个不同的数组中,并按奇数、偶数交替的顺序输出这两个数组中的所有数据(先交替输出,如果奇数个数多,则再输出剩下的奇数,如果偶数个数多,则再输出剩下的偶数)。(提示与要求:(1)定义一个数组存储从键盘输入的8个整数,先判断这8个整数中奇数和偶数的个数,才能定义存储奇数和偶数的数组的长度;(2)把一个大的数组分别存放在奇数和偶数数组中并交替输出的过程定义为方法)

分析:

1.首先需要定义一个数组存储输入的八个数,并判断输入的数中奇数和偶数的个数,所以需要使用循环遍历并判断这八个数值,定义两个计数器放入判断语句中计算个数

import java.util.Scanner;
public class Text1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("输入8个整数:");
        int b[]=new int[8];//定义数组存储输入的八个整数
        int c=0,d=0;//计数器计算奇数偶数的个数
        for (int i = 0; i <8; i++) {
            int s=scanner.nextInt();
            b[i]=s;
            if(b[i]%2==0){
                c++;
            }
            else{
                d++;
            }
        }
        System.out.println("偶数的个数"+c);
        System.out.println("奇数的个数"+d);

2.定义两个数组存放奇数和偶数,并通过循环遍历将奇数和偶数的值存入两个数组中

        int O[]=new int[c];//定义偶数的数组
        int J[]=new int[d];//定义奇数的数组
        int j=0;
        int k=0;
        for (int i = 0; i <8; i++) {
            if(b[i]%2==0){
                for (; j <8; ) {
                    O[j]=b[i];
                    j++;
                    break;
                }
            }

        }
        for (int i = 0; i <8; i++) {
            if(b[i]%2!=0){
                for (; k <8 ; ) {
                    J[k]=b[i];
                    k++;
                    break;
                }
            }
        }

1.在这里,我们为什么没有把i的值定义在for循环内而是定义在for循环内呢?

2.j的值为什么也没有放在for循环的条件变化语句位置呢?

我们的需求是在第一个循环遍历的时候通过判断让符合条件的进入第二个循环,并将值赋给存储偶数的数组,正常情况下之这样的

输入b数组值{1,2,3,4,5,6,7,8}

 结果输出:

 这是为什么?

通过对第二个for循环的断点调试我发现循环将b的值一直赋值给O[0],因为j的初始值定义在for循环内导致每次进行到第二次循环的时候j都初始为0,所以一直被重复赋值,将j的初始值放在循环外就能解决这个问题,j自增的位置也是一样的道理,放在下面才被计算不会被初始掉

 

 

 

3.定义方法将这两个方法交替输出,如果奇数个数多,则再输出剩下的奇数,如果偶数个数多,则再输出剩下的偶数

    private static void panduan(int c,int d,int[] b,int O[],int J[]) {

            if(c>d) {//偶数比奇数多
                for (int m = 0; m <d; m++) {
                    System.out.println(O[m]);
                    System.out.println(J[m]);
                }
                for(int n=d;n<c;n++) {//将多的部分输出
                    System.out.println(O[n]);
                }
            }
            else if(c==d) {//偶数等于奇数
                for (int m = 0; m < d; m++) {
                    System.out.println(J[m]);
                    System.out.println(O[m]);
                }
            }
            else{//偶数比奇数少
                for (int m = 0; m <c; m++) {
                    System.out.println(O[m]);
                    System.out.println(J[m]);
                }
                for(int n=c;n<d;n++) {
                    System.out.println(J[n]);
                }
                }
    }

完整代码:

import java.util.Scanner;
public class Text1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("输入8个整数:");
        int b[]=new int[8];//定义数组存储输入的八个整数
        //int b[]={1,2,3,4,5,6,7,8};
        int c=0,d=0;//计数器计算奇数偶数的个数
        for (int i = 0; i <8; i++) {
            int s=scanner.nextInt();
            b[i]=s;
            if(b[i]%2==0){
                c++;
            }
            else{
                d++;
            }
        }
        System.out.println("偶数的个数"+c);
        System.out.println("奇数的个数"+d);
        int O[]=new int[c];//定义偶数的数组
        int J[]=new int[d];//定义奇数的数组
        int j=0;
        int k=0;
        for (int i = 0; i <8; i++) {
            if(b[i]%2==0){
                for (; j <8; ) {
                    O[j]=b[i];
                    j++;
                    break;
                }
            }

        }
        for (int i = 0; i <8; i++) {
            if(b[i]%2!=0){
                for (; k <8 ; ) {
                    J[k]=b[i];
                    k++;
                    break;
                }
            }
        }
//        for (int a:O
//             ) {
//            System.out.println(a);
//        }
        panduan(c,d,b,O,J);
    }

    private static void panduan(int c,int d,int[] b,int O[],int J[]) {

            if(c>d) {//偶数比奇数多
                for (int m = 0; m <d; m++) {
                    System.out.println("偶数"+O[m]);
                    System.out.println("奇数"+J[m]);
                }
                for(int n=d;n<c;n++) {
                    System.out.println("偶数"+O[n]);
                }
            }
            else if(c==d) {//偶数等于奇数
                for (int m = 0; m < d; m++) {
                    System.out.println("奇数"+J[m]);
                    System.out.println("偶数"+O[m]);
                }
            }
            else{//偶数比奇数少
                for (int m = 0; m <c; m++) {
                    System.out.println("偶数"+O[m]);
                    System.out.println("奇数"+J[m]);
                }
                for(int n=c;n<d;n++) {
                    System.out.println("奇数"+J[n]);
                }
                }
    }

}

测试:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA 练习题(2) 的相关文章

随机推荐

  • 因果推断17--基于反事实因果推断的度小满额度模型学习笔记

    目录 一 原文地址 二 一些问题 2 1如何从RCT随机样本过渡到观测样本因果建模 2 2反事实学习的核心思想 2 3度小满的连续反事实额度模型 Mono CFR 2 4Mono CFR代码实现 待补充 2 5CFR学习 2 5 1TarN
  • 密度计算机公式,密度浓度换算公式(浓度和密度的换算关系)

    根据密度 质量除以体积 浓度 物质的量n除以体积 物质的量n等于m除以M 最后得到 密度等于物质的摩尔质量乘以密度 C 1000 d w M C 物质的量的浓度 d 密度 w 质量分数 M 摩尔质量 有多少写多少 里面好象还有升 立方米 反
  • SpringBoot 配置文件中的信息加密

    SpringBoot 配置文件敏感信息加密 说明 打开application properties或application yml 比如 MySql登陆密码 Redis登陆密码以及第三方的密钥等等一览无余 这里介绍一个加解密组件 提高一些属
  • pandas——相关系数函数corr()

    计算DataFrame列之间的相关系数 a np arange 1 10 reshape 3 3 data DataFrame a index a b c columns one two three print data one two t
  • Linux网络接口操作之if_nameindex

    系统信息 操作系统 lsb release ir Distributor ID CentOS Release 6 7 内核版本 uname r 2 6 32 573 26 1 el6 x86 64 gcc版本 gcc version gcc
  • 详解JS中的栈内存与堆内存!(配图解)

    一 栈内存 1 访问顺序 栈是一种先进后出的数据结构 栈内存是内存中用于存放临时变量的一片内存块 它是一种特殊的列表 栈内的元素只能通过列表的一端访问 这一端称为栈顶 另一端称为栈底 2 存储数据 一般来说 栈内存主要用于存储各种基本类型的
  • 【DC系列】DC-1靶场

    首先下载DC1的镜像资源 Index of downloadshttps www five86 com downloads 下载完成后进行解压 鼠标右击DC 1镜像 gt 打开方式 gt 选择虚拟机 如下图所示 输入虚拟机名称和选择虚拟机的
  • pycharm中安装并配置pyinstaller

    1 打开Anaconda Prompt 进入虚拟环境 conda activate TF1 14 2 安装pyinstaller 在anaconda中输入 pip install PyInstaller 3 在pycharm中配置pyins
  • 大数据统计分析毕业设计_大数据时代的成绩管理与数据分析毕业设计论文最新版...

    大数据时代的成绩管理与数据分析毕业设计论文 docx 由会员分享 可免费在线阅读全文 更多与 大数据时代的成绩管理与数据分析毕业设计论文 相关文档资源请在帮帮文库 www woc88 com 数亿文档库存里搜索 1 Threadslee 录
  • Lucas–Kanade光流算法学习

    转自 https www cnblogs com dverdon p 5325498 html Lucas Kanade光流算法是一种两帧差分的光流估计算法 它由Bruce D Lucas 和 Takeo Kanade提出 光流 Optic
  • CTFHub S7协议恶意攻击分析 WP

    一道分析S7Comm协议的流量题 这题经过雪姐姐的指点才得到flag 把流量包通过wireshark进行分析 使用tcp stream eq 0的指令进行一个过滤 分析0流的S7 Communication 在数据包时1321发现了stop
  • 布线问题(分支限界)

    问题描述 印刷电路板将布线区域划分成n m个方格 精确的电路布线问题要求确定连接方格a的中点到方格b的中点的最短布线方案 在布线时 电路只能沿直线或直角布线 为了避免线路相交 已布了线的方格做了封锁标记 其它线路不允穿过被封锁的方格 电路板
  • 咖啡汪工作日志————简单的nginx 配置文件参考

    hello 大家好 我是咖啡汪 又见面了 今天给大家带来的是niginx 的简易配置文件 主要目的是让新手快速理解 nginx 配置文件中的参数与我们代码配置文件参数的对应关系 以便进行快速有效的部署 1 主前端页面访问地址8091 2 大
  • 36黑马QT笔记之QString、QByteArray、char*的互相转换

    36黑马QT笔记之QString QByteArray char 的互相转换 1 直接看代码 if 0 QString gt QByteArray QString str 123 QByteArray array str toUtf8 中文
  • 游戏视频录制软件对比,哪款最适合你的需求?

    随着电子竞技和游戏直播行业的迅速崛起 越来越多的玩家渴望记录并分享自己在游戏中的精彩瞬间 游戏视频录制软件正是满足这一需求的关键工具 本文将针对三款优秀的游戏视频录制软件进行对比分析 以便为读者提供选购建议 游戏视频录制软件1 专业录屏软件
  • linux 默认网卡丢失,linux多网卡接收组播丢失问题

    工作中曾遇到一个很奇怪的问题 我奉命调查 事情是这样的 有一台双网卡的机器 上面装有Fedora8 运行一个程序 该程序分别在两个网口上都接收多播数据 程序运行是正常的 但是 后来升级系统到Fedora13 发现就出问题了 在运行几秒钟后
  • 数仓建模过程——写指标

    1 维度 描述信息 事实 度量值 比如 我早上花了5元买早餐 其中时间地点买了什么等就是描述信息就是维度 具体的金额数字就是事实 2 ods层一般就是原始数据 比如用户行为日志 导入到hdfs中是一条条日志 那么日志的ods层表结构就只有s
  • 特征筛选9——根据重要性SelectFromModel筛选特征(有监督筛选)

    策略思想 使用能够进行特征重要性评估的模型 一般带有feature importances或coef 参数 训练特征 如果结果重要性的得分小于阈值 就会被认为是不重要的特征比如小于0 1 mean 重要性 示例代码 import panda
  • Windows Server 2012 R2 -网站—安全性设置-身份验证(VMware workstation环境)

    安装身份验证组件 匿名身份验证 任何用户都可以直接匿名连接此网站 不需要身份认证 基本身份验证 要求用户输入用户名及密码 但是用户名及密码并没有加密 容易被拦截获取数据 默认域 用户连接网站时 可以使用两种方式 1 域用户账户 用户输入的用
  • JAVA 练习题(2)

    从键盘输入8个整数存放在一个数组中 然后将奇数和偶数分别存入到两个不同的数组中 并按奇数 偶数交替的顺序输出这两个数组中的所有数据 先交替输出 如果奇数个数多 则再输出剩下的奇数 如果偶数个数多 则再输出剩下的偶数 提示与要求 1 定义一个