1.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

分析思路:

  先通过Random类随机创建一个数组,再调用Arrays类中的排序方法sort排好序,然后再开始实现功能。

  按原来的规律插入数组,很简单,只要找到合适的插入位置n,然后将n之前的数组元素直接复制到新数组的对应位置,n处插入输入的数字,n之后的元素后移一格再移到新数组就完成了。

  最关键的就是要找到合适的插入位置。而查找算法显然二分查找为优。这里我投了个懒,直接使用Arrays类中的二分查找方法binarySearch()来查找输入的num,若数组中存在和num一样的数,则该方法的返回值即为该数的下标位置,那么插入位置n就是这个返回值;而如果数组中不存在num,则该方法能够返回一个负数,num比数组第一个元素还小则为-1,此时插入位置应该为0,大于第一个元素小于第二个元素为-2,此时插入位置应为1,以此类推。。。那么显然插入位置应该为返回值取绝对值再减一。

  找到位置实现就简单啦。具体代码如下:

 import java.util.Arrays;
import java.util.Random;
import java.util.Scanner; /**
* 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
*
* @author ChenZX
*
*/
public class Test03 { public static void main(String[] args) {
Random r = new Random();
int[] arr = new int[10];
for(int i=0;i<10;i++){ //随机生成数组
arr[i]= r.nextInt(100);
}
System.out.println(Arrays.toString(arr));
Arrays.sort(arr); //排序
System.out.println(Arrays.toString(arr)); Scanner s = new Scanner(System.in);
System.out.println("请输入一个数:");
int num = s.nextInt();
s.close();
int bs =Arrays.binarySearch(arr, num); //二分查找的结果存入bs
int n = 0; //插入位置
if(bs<0){ //查找失败,则插入位置为bs的绝对值-1
n = Math.abs(bs)-1;
}else{ //查找成功,则插入位置即bs
n = bs;
}
System.out.println(bs); int[] arr2 = new int[arr.length+1]; //建立一个新数组,长度为原数组长度+1
for(int i=0;i<arr2.length;i++){
if(i<n){ //在插入位置之前的部分直接复制就行
arr2[i]=arr[i];
}else if(i==n){ //将输入数字插入对应位置
arr2[i]=num;
}else{ //插入位置之后的数全部向后移动一格
arr2[i]=arr[i-1];
}
}
System.out.println("插入数后的数组为:");
System.out.println(Arrays.toString(arr2));
}
}

2.求一个3*3矩阵对角线元素之和

分析思路:

  这是一道矩阵的编程实现题。Java中矩阵一般都是通过二维数组实现的。

  具体代码如下:

 import java.util.Random;

 /**
* 求一个3*3矩阵对角线元素之和
*
* @author ChenZX
*
*/
public class Test04 { public static void main(String[] args) {
int sum = 0; //和
int[][] arr = new int[3][3];
Random r = new Random();
for(int i=0;i<3;i++){ //随机生成矩阵
for(int j=0;j<3;j++){
arr[i][j] = r.nextInt(10); //0到9
}
}
for(int i=0;i<3;i++){ //遍历矩阵
for(int j=0;j<3;j++){
System.out.print(arr[i][j]+" "); //打印矩阵元素
if(i==j){ //如果为对角线元素
sum += arr[i][j]; //求和
}
}
System.out.println(); //每输出3个元素换行
}
System.out.println("此矩阵对角线的和为:"+sum);
}
}

Java-每日编程练习题②(数组练习)的更多相关文章

  1. 6、50道JAVA基础编程练习题跟答案

    50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析 ...

  2. 50道JAVA基础编程练习题

    50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析 ...

  3. 50道JAVA基础编程练习题 - 题目

    50道JAVA基础编程练习题[1]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? [2]题目:判断 ...

  4. Java每日编程day2

    Java每日编程day2 第一题 package com.pcx.day2; /* * 九九乘法表并逆序 */ public class JiuJiu { public static void mai ...

  5. JAVA 基础编程练习题31 【程序 31 数组逆序】

    31 [程序 31 数组逆序] 题目:将一个数组逆序输出. 程序分析:用第一个与最后一个交换. package cskaoyan; public class cskaoyan31 { @org.jun ...

  6. JAVA 基础编程练习题

    1 [程序 1 不死神兔] 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?程序分析: 兔子的规 ...

  7. 【搬砖】安卓入门(4)- Java开发编程基础--数组

    05.01_Java语言基础(数组概述和定义格式说明)(了解) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. ...

  8. JAVA 基础编程练习题36 【程序 36 移动位置】

    36 [程序 36 移动位置] 题目:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数 package cskaoyan; public class cskao ...

  9. JAVA 基础编程练习题35 【程序 35 最大最小交换】

    35 [程序 35 最大最小交换] 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组. package cskaoyan; public class cskaoyan35 { ...

  10. JAVA 基础编程练习题30 【程序 30 插入数字】

    30 [程序 30 插入数字] 题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的 ...

随机推荐

  1. Go 语言集成开发环境 GoLand 更新至 2018.1.3 版本

    GoLand 2018.1.3 已发布,这是一个全新的更新,尽管没有带来明显的针对 Go 语言的特定改进,但还是提供了许多与 UI,JavaScript 和 SQL 支持相关的错误修复和改进. 可通过 ...

  2. [Kali_Metasploit]db_connect创建连接时无法连接的解决方案

    问题1复现路径: postgresql selected, no connection 第一步: db_connect postgres:toor@127.0.0.1/msfbook 连接成功不需要进 ...

  3. PHP 的 uniqid 函数产生的 id 真的是唯一的么?

    PHP 的 uniqid 函数产生的 id 真的是唯一的么? 最近使用到了 uniqid,就产生了疑问?uniqid 生成的 id 由什么组成?真的是唯一的么?什么情况下会产生冲突? 从文档中看到 u ...

  4. Windows上使用Git托管代码到Coding

    作者:荒原之梦 Git简介: Git是一款分布式版本控制系统,可用于项目的版本管理.Git可以管理本地代码仓库与远程代码仓库间的连接以及进行版本控制,使得我们可以在本地离线进行修改等操作,之后再将代码 ...

  5. How to set spring boot active profiles with maven profiles

    In the previous post you could read about separate Spring Boot builds for a local development machin ...

  6. Python定时任务框架APScheduler

    http://blog.csdn.net/chosen0ne/article/details/7842421 APScheduler是基于Quartz的一个Python定时任务框架,实现了Quartz ...

  7. 拿到6个重磅offer的大神,超详细面试经验总结

    本人是国内某财经院校的小本,学校不算很有名,也没有很好的硬件条件,但是很幸运的在这样的就业大环境里拿了6个OFFER,其中包括一些股份制商业银行的总行,4大国有商业银行的省行,以及国内最一流国企的省公 ...

  8. MassTransit 实现发布/订阅

    MassTransit 介绍  先看下masstransit 官网介绍:MassTransit 是一个自由.开源.轻量级的消息总线, 用于使用. NET 框架创建分布式应用程序.MassTransit ...

  9. java 匿名对象,内部类,修饰符,代码块

    匿名对象是在建对象时只有创建对象的语句方法而没有把对象的地址赋值给变量,匿名对象只能调用一次方法,想再调用时需要再创建一个新的匿名对象 创建普通对象:Person p =new Person(); 创 ...

  10. 他学习一年Python找不到工作,大佬都说你别再学Python了!

    引言: 都说,滴水穿石非一日之功.然而有些人即使奋斗一辈子也比不上别人一年,别人学习一年比不得你学习一个月.其中缘由,有些人看了大半辈子还没看明白. 即使Python这么火,为何你学习一年的Pytho ...