大数据之路day04_1--数组 and for循环进阶
Java数组
在开始之前,提一个十分重要的一点:注意:
在给数组分配内存空间时,必须指定数组能够存储的元素来确定数组大小。创建数组之后不能修改数组的大小,可以使用length属性获取数组的大小。在java数组中,数组只有length属性,并没有字符串的length()方法!!!
学习Java少不了对数组的学习,也就是说,从这节开始,我们的学习难度慢慢增加,代码思维更加复杂。
什么数组: 数组是由相同类型的若干项组成的一个数据集合,数组中的每个数据称为元素。
数组声明格式:(3种)
1、数据类型[] 数组名称 = new 数据类型[数组大小];
2、数据类型[] 数组名称 = new 数据类型[]{数组元素};
3、数据类型[] 数组名称 = {数组元素};
数组包括 一维数组和多维数组,在这里说一维数组和二维数组。
一、一维数组
一维数组的定义和初始化:
int[] arr = new int[5]; //初始化一个大小为5的一个一维数组。
int[] arr = new int[]{1,2,3,4,5}; //初始化一个大小为5的一个一维数组,里面的内容为1,2,3,4,5。
int[] arr = {1,2,3,4,5}; //初始化一个大小为5的一个一维数组,里面的内容为1,2,3,4,5。
注:具体要使用什么方式初始化,要看题目具体的要求,不做要求的话,个人建议使用第一种,可以自己手动输入里面的元素,也可以进行插入操作。
例子1:用一个一维数组存储元素并用循环将其输出(注意,数组不能直接输出名字,这样只是输出它指向的地址)
package day04;
public class exer2 {
public static void main(String[] args) {
String[] a = new String[] {"Nike背包","Adudas运动衫","李宁运动鞋","Kappa外套","361°腰包"};
System.out.println("本次活动特价商品有:");
for(int i = 0;i<a.length;i++) {
System.out.println(a[i]);
}
/*System.out.println(a);*/
}
}
数组中我们常用的方法有:
1、数组排序方法 java.util.Arrays.sort();
例子:初始化一个一维数组,插入一个元素进行排序。
package day04;
import java.util.Scanner;
public class exer5 {
// {"a","c","u","b","e","p","f","z"};
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = new String[9];
s[0] = "a";
s[1] = "c";
s[2] = "u";
s[3] = "b";
s[4] = "e";
s[5] = "p";
s[6] = "f";
s[7] = "z";
System.out.print("元字符序列:");
for(int i =0;i<s.length;i++) {
System.out.print(s[i]+" ");
}
System.out.println();
System.out.print("待插入的字符是:");
String a = sc.next();
s[8] = a;
java.util.Arrays.sort(s);
System.out.print("排序后的序列:");
for(int i =0;i<s.length;i++) {
System.out.print(s[i]+" ");
}
}
}
2、数组转换成字符串的方法 Array.toString();
例子:从控制台输入5名学生的成绩,用一维数组接收并且将其进行降序排序。
package day04;
import java.util.Scanner;
public class exer2_4 {
public static void main(String[] args) {
int[] stu = new int[5];
Scanner sc = new Scanner(System.in);
System.out.print("请输入五名学员的成绩:");
for(int i = 0;i<stu.length;i++) {
int a = sc.nextInt();
stu[i] = a;
}
System.out.println("此时的学生成绩为:");
System.out.println(java.util.Arrays.toString(stu));
for(int x = 0;x<stu.length;x++) {
for(int y = x;y<stu.length;y++ ) {
if(stu[x]<stu[y]) {
int temp = stu[y];
stu[y] = stu[x];
stu[x] = temp;
}
}
}
System.out.println("排序后的学生成绩为:");
System.out.println(java.util.Arrays.toString(stu));
}
}
输出结果:

3、数组复制方法
System.arraycopy(原数组名称,从原数组哪个地方开始复制,目标数组名称,从目标数组哪个位置开始复制,复制的长度);
package homework;
public class ArrayDemo4 {
public static void main(String[] args) {
/*
*数组操作的方法
*
*/
//数组方法---数组复制 System.arraycopy(原数组名称,从原数组哪个地方开始复制,目标数组名称,从目标数组哪个位置开始复制,复制的长度);
int a1[] = new int[] {12,32,43,5,4,43,2};
int a2[] = new int[] {11,22,33,44,55,66};
System.arraycopy(a1, 3, a2, 1, 3);
for(int i = 0;i<a2.length;i++) {
System.out.print(a2[i]+" "); //11 5 4 43 55 66
}
System.out.println("--------------------");
//数组排序 java.util.Arrays.sort(数组名称);
int a3[] = new int[] {21,43,54,4,345,65,23,1,32};
java.util.Arrays.sort(a3);
for(int i = 0;i<a3.length;i++) {
System.out.print(a3[i]+" ");
}
}
}
二、二维数组
二维数组的定义和初始化:
1、int[][] array = {{1,2,3},{4,5,6}};
2、int[][] array = new int[][]{{1,2,3},{4,5,6}};//数组的个数由后面初始化的实体给出
3、int[][] array = new int[2][3];
注意:如果采用第三种的方式初始化,赋值不能直接在后面添加,要利用for循环嵌套进行赋值。
例子:循环输入顾客商品价格,并且判断有几个商品可以打折。
package day04;
import java.util.Scanner;
public class exer2_5 {
public static void main(String[] args) {
int count = 0;
float[][] mans = new float[3][3];
Scanner sc = new Scanner(System.in);
for(int i = 0;i<3;i++) {
System.out.println("请输入第"+(i+1)+"个人购物的三件商品的价格:");
for(int j = 0;j<3;j++) {
float a = sc.nextFloat();
mans[i][j] = a;
if(a>300) {
count++;
}
}
System.out.println("第"+(i+1)+"个人共有"+count+"件商品享受8折优惠!");
count = 0;
}
}
}
三、数组实现冒泡排序、选择排序
1、冒泡排序
package day04;
public class MaoPao {
public static void main(String[] args) {
//数组
int[] arr = {5,3,7,2,6,7,6,5,4,1,9,8};
//外部循环
System.out.println("开始第1次遍历对比");
for(int i=0;i<arr.length-1;i++){
//相连两个数的索引是利用内部循环
for(int index=0;index<arr.length-1-i;index++){
//同样利用中间变量,注意区分与选择排序的区分
if(arr[index]>arr[index+1]){
int temp=arr[index];
arr[index]=arr[index+1];
arr[index+1]=temp;
}
}
System.out.println(java.util.Arrays.toString(arr));
System.out.println("开始第"+(i+2)+"次遍历对比");
}
System.out.println(java.util.Arrays.toString(arr)); //Arrays.toString() 返回指定数组的内容的字符串表示形式。
}
}
冒泡排序是相邻的两两进行比较,如果前一个大于后一个,两两交换位置,使得最终数组成升序的顺序排序。
2、选择排序
package day04;
public class Choice {
public static void main(String[] args) {
// 数组
int[] arr = { 5, 3, 7, 2, 6, 7, 6, 5, 4, 1, 9, 8 };
// 第一次循环,是确定一个数依次和后面数的比较的数。
for (int i = 0; i < arr.length - 1; i++) {
// 这个是和第一个数的比较的数
for (int j = i + 1; j < arr.length; j++) {
// 定义一个临时的变量,用来交换变量
int temp;
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
System.out.println("arr["+i+"]="+arr[i]);
System.out.println("arr["+j+"]="+arr[j]);
System.out.println();
}
}
// 打印最后的排序结果
System.out.println(java.util.Arrays.toString(arr));
}
}
选择排序是由一个开始与所有的进行比较,如果有比它小的,交换位置,然后第二个与后面的进行比较,如此比下去,进行交换,使得最终数组成升序的顺序进行排序
四、For循环进阶
利用for循环,实现较为复杂的图形,更好的理解for循环的执行过程。
例子1、实现正直角三角形,手动输入三角形的高,每一行为奇数
package day04;
import java.util.Scanner;
public class exer2_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("输入直角三角形的高:");
int height = sc.nextInt();
for(int i = 0;i<height;i++) {
for(int j = 0;j<2*i+1;j++) {
System.out.print("*");
}
System.out.println("");
}
}
}
运行结果:

例子2、实现倒直角三角形,手动输入三角形的高,每一行为奇数
package day04;
import java.util.Scanner;
public class exer2_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("输入直角三角形的高:");
int height = sc.nextInt();
for(int i = 0;i<height;i++) {
for(int j = i;j<height;j++) {
System.out.print("*");
}
System.out.println("");
}
}
}
运行结果:

例子3、实现正等腰三角形,手动输入三角形的高,每一行为奇数
package day04;
import java.util.Scanner;
public class exer2_3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("输入直角三角形的高:");
int height = sc.nextInt();
for (int i = 0; i < height; i++) {
for (int j = 0; j < height - i - 1; j++) {
System.out.print(" ");
}
for (int k = 0; k < (i * 2 + 1); k++) {
System.out.print("*");
}
System.out.println("");
}
}
}
运行结果:

大数据之路day04_1--数组 and for循环进阶的更多相关文章
- C#码农的大数据之路 - 使用C#编写MR作业
系列目录 写在前面 从Hadoop出现至今,大数据几乎就是Java平台专属一般.虽然Hadoop或Spark也提供了接口可以与其他语言一起使用,但作为基于JVM运行的框架,Java系语言有着天生优势. ...
- 大数据之路week01--自学之集合_1(Collection)
经过我个人的调查,发现,在今后的大数据道路上,集合.线程.网络编程变得尤为重要,为什么? 因为大数据大数据,我们必然要对数据进行处理,而这些数据往往是以集合形式存放,掌握对集合的操作非常重要. 在学习 ...
- 大数据之路week04--day06(I/O流阶段一 之异常)
从这节开始,进入对I/O流的系统学习,I/O流在往后大数据的学习道路上尤为重要!!!极为重要,必须要提起重视,它与集合,多线程,网络编程,可以说在往后学习或者是工作上,起到一个基石的作用,没了地基,房 ...
- 胖子哥的大数据之路(11)-我看Intel&&Cloudera的合作
一.引言 5月8日,作为受邀嘉宾,参加了Intel与Cloudera在北京中国大饭店新闻发布会,两家公司宣布战略合作,该消息成为继Intel宣布放弃大数据平台之后的另外一个热点新闻.对于Intel的放 ...
- 胖子哥的大数据之路(10)- 基于Hive构建数据仓库实例
一.引言 基于Hive+Hadoop模式构建数据仓库,是大数据时代的一个不错的选择,本文以郑商所每日交易行情数据为案例,探讨数据Hive数据导入的操作实例. 二.源数据-每日行情数据 三.建表脚本 C ...
- 胖子哥的大数据之路(9)-数据仓库金融行业数据逻辑模型FS-LDM
引言: 大数据不是海市蜃楼,万丈高楼平地起只是意淫,大数据发展还要从点滴做起,基于大数据构建国家级.行业级数据中心的项目会越来越多,大数据只是技术,而非解决方案,同样面临数据组织模式,数据逻辑模式的问 ...
- 胖子哥的大数据之路(7)- 传统企业切入核心or外围
一.引言 昨天和一个做互联网大数据(零售行业)的朋友交流,关于大数据传统企业实施的切入点产生了争执,主要围绕两个问题进行了深入的探讨: 问题1:对于一个传统企业而言什么是核心业务,什么是外围业务? 问 ...
- 胖子哥的大数据之路(6)- NoSQL生态圈全景介绍
引言: NoSQL高级培训课程的基础理论篇的部分课件,是从一本英文原著中做的摘选,中文部分参考自互联网.给大家分享. 正文: The NoSQL Ecosystem 目录 The NoSQL Eco ...
- 胖子哥的大数据之路(四)- VisualHBase功能需求框架
一.引言 大数据在结构化数据存储方面的应用需求越来越明确,但是大数据环境下辅助开发工具的不完善,给数据库管理人员和开发人员带来的不变难以言表,基于此创建了开源项目VisualHBase,同时创建了Vi ...
随机推荐
- web动态站面试题
1.简述 tomcat 的启动过程? 答:Tomcat 启动--> 读取自己的 server.xml-->根据 Context 标签的内容找到项目目录. 项目入口 path-->读取 ...
- javascript进阶-《原型对象和原型链》
原创发布 by @一像素 2015.12 在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象Object 和 函数对象Function. 一般而言,通过new Fun ...
- 谈linux服务器运维需要掌握的技能
一.linux基础 包括对Linux整体的理解/使用和基本命令 二.运维的命令 运维相关的工具(命令) 三.基础服务 LAMP或LNMP :Apache/Nginx,MySQL,PHP/Python/ ...
- MySQL基础(四)常用函数
转载自 http://blog.csdn.net/evankaka MySQL数据库中提供了很丰富的函数.MySQL函数包括数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数.加密函数. ...
- HeidiSQL、Navicat、mysql命令和source命令导入sql脚本的速度比较
一.四种导入方式的比较 1.heidisql客户端是一条一条插入的,速度最慢,而且很脆弱比较容易崩溃: 2.mysql命令导入380万记录用时1小时13分(属于前台运行的命令,ctrl+c就可以结束) ...
- CentOS 7.6 Telnet服务搭建(Openssh升级之战 第一任务备用运输线搭建)
(以下内容亲手完成,如果需要搬走记得把写博的小白的名字和邮箱一起搬走) 出来玩(学习),总是要还的! 有不明的问题的时候,都来博客园转转,总能找到答案或者灵感,开博3个月都没发一篇帖(不晓得管理员有何 ...
- 【Cocos2d-x】学习笔记目录
从2019年7月开始学习游戏引擎Cocos2dx,版本3.17. 学习笔记尽量以白话的形式表达自己对源码的理解,而不是大篇幅复制粘贴源码. 本人水平有限,欢迎批评指正! Cocos2d-x 学习笔记 ...
- 【OUC2019写作】论文写作第九小组英语常用表达整理
第一部分: 一.简要综述以往和现在研究: 某方法被认为如何如何:it is well known that; it is regarded as; it is believed to ; It is ...
- HDU 1532 Drainage Ditches(最大流 EK算法)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1532 思路: 网络流最大流的入门题,直接套模板即可~ 注意坑点是:有重边!!读数据的时候要用“+=”替 ...
- xshell rz commend not found
sudo apt-get install lrzsz 上传rz 下载sz