我在上海乐字节学习java的第九天(持续更新中)

溢出棱镜
• 阅读 854

综合案例(数组的管理)

  • 需求:定义一个类,对数组中的数据进行管理
  • 方法
  • 插入数据:public int[] insertDate(){ }
  • 显示所以数据:public void showDate(int[] a, int length){ }
  • 在指定位置处插入数据:public void insertAtArray( int[] a,int n,int k){ }
  • 查询能被3整除的数据:public void divThree(int[] a){ }
  • 用来显示菜单页面:public void notice() { }
  • 最后用 switch 语句实现功能的选择

代码如下

package com.datemanage;

import java.util.InputMismatchException;

import java.util.Scanner;

/**

 * 从键盘接受数据存放到数组中,并对数组中的数组进行管理

 * 

 * @author SH

 *

 */

public class DataManage {

/**

  • 从键盘接收数据

  • @return 接收数据的数据

*/

public int[] insertDate() {

int[] a = new int[10];

Scanner sc = new Scanner(System.in);

// 少接收一个数据,为在指定位置处插入数据做准备

for (int i = 0; i < a.length - 1; i++) {

System.out.println("请输入第" + (i + 1) + "个数据:");

try {

a[i] = sc.nextInt();

} catch (InputMismatchException e) {

System.out.println("输入的数据格式有误,不能有非数字!");

sc.next();

i--;

}

}

return a;

}

/**

  • 显示数组中元素的内容

  • @SH a:数组
  • @SH length:要显示的数组元素的个数

*/

public void showData(int[] a, int length) {

for (int i = 0; i < length; i++) {

System.out.print(a[i] + "     ");

}

System.out.println();

}

/**

  • 从键盘接收一个数据,插入到数组的指定位置处

  • @SH a: 要插入数据的数组
  • @SH n:要插入的数据
  • @SH k:要插入的位置,从0开始

*/

public void insertAtArray(int[] a, int n, int k) {

// 注意从最后一个数据开始移动,避免数据覆盖

for (int i = a.length - 1; i > k; i--) {

a[i] = a[i - 1];

}

a[k] = n;

}

/**

  • 输出数组中能被3整除的元素

  • @SH a

*/

public void divThree(int[] a) {

String str = "";

int count = 0;

for (int n : a) {

if (n % 3 == 0) {

str = str + n + "   ";

count++;

}

}

if (count == 0) {

System.out.println("数组中没有能被3整除的元素!");

} else {

System.out.println("数组中能被3整除的元素为:" + str);

}

}

/**

  • 提示信息

*/

public void notice() {

System.out.println("**");

System.out.println("                1--插入数据");

System.out.println("                2--显示所有数据");

System.out.println("                3--在指定位置处插入数据");

System.out.println("                4--查询能被3整除的数据");

System.out.println("                0--退出");

System.out.println("**");

}

public static void main(String[] args) {

DataManage dm = new DataManage();

Scanner sc = new Scanner(System.in);

int input = 0;

int[] a = null;

int n = 0, k = 0;// n表示要插入的数据,k表示插入位置

while (true) {

dm.notice();

System.out.println("请输入对应的数字进行操作:");

try {

input = sc.nextInt();

} catch (InputMismatchException e) {

System.out.println("输入的数据格式有误,不能有非数字!");

sc.next();

continue;

}

if (input == 0) {

System.out.println("退出程序!");

break;

}

switch (input) {

case 1:

// 插入数据

a = dm.insertDate();

// 显示数据

System.out.println("数组元素为:");

dm.showData(a, a.length - 1);

break;

case 2:

if (a != null) {

System.out.println("数组元素为:");

if (a[a.length - 1] == 0) {

// 如果数组的最后一个元素为0,说明还没有插入数据,因此不显示最后一个元素

dm.showData(a, a.length - 1);

} else {

dm.showData(a, a.length);

}

} else {

System.out.println("还未在数组中插入数据,请重新选择操作!");

}

break;

case 3:

// 在指定位置处插入数据

if (a != null) {

System.out.println("请输入要插入的数据:");

try {

n = sc.nextInt();

System.out.println("请输入要插入数据的位置:");

k = sc.nextInt();

} catch (InputMismatchException e) {

System.out.println("输入的数据格式有误,不能有非数字!");

sc.next();

break;

}

dm.insertAtArray(a, n, k);

dm.showData(a, a.length);

} else {

System.out.println("还未在数组中插入数据,请重新选择操作!");

}

break;

case 4:

// 查询数组中能被3整除的元素

if (a != null) {

dm.divThree(a);

} else {

System.out.println("还未在数组中插入数据,请重新选择操作!");

}

break;

}

}

}

}

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
皕杰报表(关于日期时间时分秒显示不出来)
在使用皕杰报表设计器时,数据据里面是日期型,但当你web预览时候,发现有日期时间类型的数据时分秒显示不出来,只有年月日能显示出来,时分秒显示为0:00:00。1.可以使用tochar解决,数据集用selecttochar(flowdate,"yyyyMMddHH:mm:ss")fromtablename2.也可以把数据库日期类型date改成timestamp
Wesley13 Wesley13
3年前
PIC中档单片机汇编指令详解(5)
位操作指令详述BCF数据寄存器指定位清0语法形式:BCFf,b操作数:f为数据寄存器的低7位地址(0x00~0x7F)B为数据位编号(0~7)执行时间:一个指令周期执行过程:使数据寄存器f的的b位清0状态标志影响:无说明:该指令可对任何数据寄存器的任意一个位置清0,常用于标志位的设定和清除,或者把某一管脚置成低电平。指
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
NEO从源码分析看UTXO交易
_0x00前言_社区大佬:“交易是操作区块链的唯一方式。”_0x01交易类型_在NEO中,几乎除了共识之外的所有的对区块链的操作都是一种“交易”,甚至在“交易”面前,合约都只是一个小弟。交易类型的定义在Core中的TransactionType中:源码位置:neo/Core/TransactionType
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
PHP二维数据排序,二维数据模糊查询
一、因为项目中的一个报表需要合并三个表的数据,所以分表查询再合并数据,利用PHP数组函数进行排序,搜索。三表合并后的数组结构如下:Array(0Array(history_id12sla_group_