概念

书中有两章是围绕数组的概念展开的。一维数组和二维数组。下面是一些基本概念:

1.数组一旦创建,大小就不能改变
double []list = new double[10];
2.数组变量存储的是数组的引用
3.foreach:不用下标就可以顺序地访问整个数组

for(double element:list){System.out.println(element);
}

4.数组的复制

list2 = list1;

这句话仅仅是将list1的引用传递给了list2,实际上,list1和list2指向了同一个数组。
复制数组有三种方法:

  • 循环语句逐个复制数组的元素(for语句等)
  • System类中的静态方法:arraycopy
System.arraycopy(sourceArray,0,targetArray,tarPos,length); 
  • clone方法

5.将数组传递给方法
对于基本类型的参数,传递的是实参的值
对于数组类型的参数,参数值是数组的引用
JVM将数组存储在堆中,堆用于动态内存分配,在堆中,内存块可以按任意顺序分配和释放。

习题练习

  • 输入几个学生的成绩,并根据最高的成绩来制定评级标准。分为:
    A(分数>最高分数-10)
    B(分数>最高分数-20)
    C(分数>最高分数-30)
    D(分数>最高分数-40)
import java.util.Scanner;
public class PrintGrade {public static void main(String [] args){System.out.println("Enter the numbers of students:");Scanner input = new Scanner(System.in);int number = input.nextInt();double [] grade = new double[number];System.out.println("Enter " + number + " Scores:" );for(int i = 0 ; i<number ; i++)grade[i] = input.nextDouble();double bestgrade = bestGrade(grade);for(int i = 0 ; i<number ; i++) {char level = Classify(grade[i], bestgrade);System.out.println("Student " + i +" score is: " + grade[i] +" and grade is: " + level);}}public static double bestGrade(double []grade ){double max = grade[0];for(int i=1;i<grade.length;i++)if(grade[i]>max)max = grade[i];return max;}public static char Classify(double score,double best){char []Level={'A','B','C','D'};if(score>=best-10)return Level[0];else if(score >= best - 20)return Level[1];else if(score >= best - 30)return Level[2];elsereturn Level[3];}
}
  • 控制台要求输入六个数,找出最大值,以及最大值的个数。
import java.util.Scanner;/*** Created by lixuefei on 2017/3/19.* Show the maximum number and the amount of it*/
public class TestArray {public static void main(String args[]){int array[] = new int[6];for (int i = 0;i < 6;i++){System.out.println("Enter a number:");Scanner Input = new Scanner(System.in);array[i] = Input.nextInt();}int max = array[0];int count = 0;for (int i = 1;i<6;i++){if(array[i]>max){max = array[i];count = 1;}else if (array[i] == max)count++;elsecontinue;}//for(int i = 0;i<6;i++) {//    System.out.println(array[i]);System.out.println("The maximum number is: " + max + " ,and the amount of it is: " + count);}
}
  • 将数组传递给方法:改变数组中两个数字的顺序,swap方法仅针对变量而言,swapfirsttwoinarray则对数组进行操作。
/*** Created by lixuefei on 2017/3/19.*/
public class TestPassArray {public static void main(String args[]){int []test = {1,2};System.out.println("Array is " + test[0] + "," +test[1]);swap(test[0],test[1]);System.out.println("After swap,result is :" + test[0] +"," +test[1]);swapFirstTwoInArray(test);System.out.println("After swap first two in array,result is :" + test[0] +"," +test[1]);}public static void swap(int n1,int n2){int temp;temp = n1;n1 = n2;n2 = temp;}public static void swapFirstTwoInArray(int[] array){int temp;temp = array[0];array[0] = array[1];array[1] = temp;}
}
  • 随机产生100个字母,并统计每种字母的个数
/*** Created by lixuefei on 2017/3/19.* count each letter`s number in the random array*/
public class CountLettersInArray {public static void main(String args[]){int countarray[] = countLetters();for (int i = 0;i<26;i++){System.out.println("The number of " + (char)(i +'a' )+ " is " + countarray[i]);}}public static char[] createArray(){//create a random array which has 100 letterschar Letters[] = new char[100];for(int i = 0;i <100;i++){Letters[i] = RandomCharacter.getRandomLowerCaseLetter();//use the RandomCharacter program we did before to create a random array}return Letters;}public static int[] countLetters(){//create an array with 26 elements,each element represent a letter:0,a 1,b 2,c...int count[] = new int[26];char LetterArray[] = createArray();for (int i = 0;i < 100 ;i++){count[LetterArray[i] - 'a']++;}return count;}
}
  • 可变长参数列表

用同一个函数计算两个不同长度数组中的最大值


/*** Created by lixuefei on 2017/3/19.* find the max number of two arrays with different length*/
public class PrintMax {public static void main(String args[]){int []testArray1 = {1,2,3,2,6};int []testArray2 = {2,4,3};PrintMax(testArray1);PrintMax(testArray2);}public static void PrintMax(int ... array){if(array.length==0)System.out.println("No arguement passed");int max = array[0];for(int i =0;i<array.length;i++){if(array[i]>max)max = array[i];}System.out.println("The max number is :" + max);}
}
  • 线性查找法
/*** Created by lixuefei on 2017/3/19.*/
public class LinearSearch {public static void main(String args[]){int[] array = {1,4,3,6,2};int j = linearSearch(array,6);System.out.print("The result is:" + j);}public static int linearSearch(int[] list,int key){for (int i = 0;i < list.length;i++){if(key == list[i])return i;}return -1;}
}
  • 二分查找法
/*** Created by lixuefei on 2017/3/19.*/public class BinarySearch {public static void main(String args[]){int []array = {1,3,5,7,9,11,13,15,17,19};int i = binarySearch(array,17);int j = binarySearch(array,3);int k = binarySearch(array,9);System.out.println("The result is :" + i + "," + j + "," + k);}public static int binarySearch(int[] list,int key){int low = 0;int high = list.length-1;while(low <= high){int middle = (low+high)/2;if(key < list[middle])high = middle - 1;else if (key > list[middle])low = middle + 1;elsereturn middle;}return -1;}
}
  • 选择排序
/*** Created by lixuefei on 2017/3/19.*/
public class SelectionSort {public static void main(String args[]){int []array = {1,3,5,2,4,7,9};selectionSort(array);System.out.print("The sorted array is :");for(int i = 0;i<array.length;i++)System.out.print(array[i] + " ");}public static void selectionSort(int[] list){int i,j,max;//j will decrease from the max index for (j = list.length-1;j>=1; j--){int max_index = 0;max = list[0];for(i = 1;i<=j;i++){if(max<list[i]){max = list[i];max_index = i;}}if(max_index!=j){//if max_index is not equal to j,exchange them//int temp;//temp = list[flag];list[max_index] = list[j];list[j] = max;}}}}
  • 插入排序
/*** Created by lixuefei on 2017/4/11.*/
public class InsertionSort {public static void main(String args[]){int [] testList = {2,9,5,4,8,16};insertionSort(testList);for(int i = 0;i<testList.length;i++){System.out.println(testList[i]);}}public static void insertionSort(int list[]){for(int i = 1;i <list.length;i++){int key = list[i];int k;for(k = i - 1;k >= 0 && list[k] > key;k--){list[k+1] = list[k];}list[k+1] = key;}}
}
  • Arrays类的简单使用
/*** Created by lixuefei on 2017/4/20.*/
import java.util.Arrays;
public class ArraysClassTest {public static void main(String[] args){double[] numbers ={1.1,4.4,3.2,6.5,5.3,2.8,7.2,3.9};System.out.println(Arrays.toString(numbers));//使用Arrays.toString显示数组内容char[] chars = {'e','b','c','h','a'};System.out.println(chars);//排序Arrays.sort(numbers);Arrays.sort(chars);for(int i = 0;i <numbers.length;i++)System.out.print(numbers[i] + ",");System.out.println();System.out.println(chars);//查找System.out.println("The index of 5.3 is :" + Arrays.binarySearch(numbers,5.3));System.out.println("The index of c is :" +  Arrays.binarySearch(chars,'c'));//比较是否相等int[] list1 = {1,2,3,4};int[] list2 = {2,3,4,5};int[] list3 = {1,2,3,4};System.out.println(Arrays.equals(list1,list2));System.out.println(Arrays.equals(list1,list3));//填充数组Arrays.fill(list1,5);Arrays.fill(list2,2,3,8);System.out.println(Arrays.toString(list1));System.out.println(Arrays.toString(list2));}
}
  • 判断学生选择题正确个数
/*** Created by lixuefei on 2017/4/20.*/
public class GradeExam {public static void main(String[] args){char[][] answers ={{'A','B','A','C'},{'A','C','B','A'},{'B','B','C','C'},{'D','A','B','C'}};char[] correctAnswer = {'A','C','B','C'};for (int row = 0;row <answers.length;row++){int index = 0;int rightCount = 0;for(int col = 0;col < answers[row].length;col++){if(answers[row][col]==correctAnswer[index]){rightCount++;}index++;}System.out.println("Right answer is :" + rightCount);}}
}
  • 计算5个数的平均值并返回大于平均值的数量
/*** Created by lixuefei on 2017/4/20.*/
import java.util.Arrays;
import java.util.Scanner;
public class AverageAbove {public static void main(String[] args){System.out.print("Please input five numbers:");Scanner input= new Scanner(System.in);int[] numList = new int[5];for(int i = 0;i<5;i++)numList[i] = input.nextInt();//System.out.println(Arrays.toString(myList));int sum = 0;for(int i = 0;i < 5; i++)sum += numList[i];double sum_s = sum;double avg = sum_s/5;System.out.println(avg);int count=0;for(int i = 0; i < 5 ;i++)if(numList[i]>avg){count++;}System.out.println("The average of the numbers is :" + avg + "\nThere`s " + count + " numbers larger than average");}}
  • 读入不确定的考试成绩,以负数为结束(用到了ArrayList)
/*** Created by lixuefei on 2017/4/21.* 6-4*/
import java.util.Scanner;
import java.util.ArrayList;
public class AnalysisGrade {public static void main(String[] args){System.out.println("Please input some numbers:");Scanner input = new Scanner(System.in);ArrayList gradelist = new ArrayList();//int[] gradeList = new int[100];int index = 0;int grade = input.nextInt();while(grade >= 0){gradelist.add(grade);grade = input.nextInt();index++;}System.out.println(gradelist);}
}
  • 剔除重复数之后的结果显示
/*** Created by lixuefei on 2017/4/21.* 6-5读入10个数并显示其中互不相同的数(即一个数出现多次仅显示一次)*/
import java.util.ArrayList;
import java.util.Scanner;
public class DifferNum{public static void main(String[] args){System.out.println("Please insert 10 numbers:");Scanner input = new Scanner(System.in);int number;ArrayList UniqueList = new ArrayList();number = input.nextInt();UniqueList.add(number);for(int i = 1; i< 10; i++){number = input.nextInt();for(int j = 0;j<UniqueList.size();j++){if(!UniqueList.contains(number)){UniqueList.add(number);}}}System.out.println(UniqueList);}
}
  • 随机显示100个0-9之间的数字,并且统计每个数字的个数
import java.util.Arrays;/*** Created by lixuefei on 2017/4/21.*/
public class CountNumbers {public static void main(String[] agrs){int[] numbers = new int[100];int[] count = new int[10];for(int i = 0;i < 100;i++){numbers[i] = (int)(Math.random()*10);count[numbers[i]]++;}System.out.println(Arrays.toString(numbers));System.out.println(Arrays.toString(count));}
}
  • 重载方法:返回数组的平均数
/*** Created by lixuefei on 2017/4/21.* 6-8*/
public class Average {public static void main(String[] agrs){int[] intList = {1,2,3,4,5};double[] doubleList = {6.0,4.4,1.9,2.9,3.4,3.5};System.out.println(average(intList));System.out.println(average(doubleList));}public static int average(int[] array){int sum = 0;int avg;for(int i = 0;i < array.length;i++)sum += array[i];avg = sum/array.length;return avg;}public static double average(double[] array){double sum = 0.0;double avg;for(int i = 0;i <array.length;i++)sum += array[i];avg = sum/array.length;return avg;}
}
  • 求最小元素并返回其下标
/*** Created by lixuefei on 2017/4/21.* 6-9,10*/
public class MinimumIndex {public static void main(String[] agrs){int[] testList = {1,2,3,5,10,100,2,-22};minimum(testList);}public static void minimum(int[] array){int min = array[0];int index = 0;for(int i = 1;i < array.length;i++)if(array[i]<min){min = array[i];index = i;}System.out.println("The minimum is :"+ min + ",the index of it is:" + index);}}
  • 计算标准差
import java.util.Scanner;/*** Created by lixuefei on 2017/4/24.* 6.11 感觉书上给的标准差公式不对。应该是方差总和/数量N,而不是N-1*/
public class Deviation {public static void main(String[] args){System.out.println("Enter ten numbers:");Scanner input = new Scanner(System.in);double [] List= new double[10];for(int i = 0;i < 10;i++){List[i] = input.nextDouble();}double mean_value,dev;mean_value = mean(List);dev = deviation(List);System.out.println("The mean is:" + mean_value + "\nThe standard deviation is:" + dev );}/*compute the deviation of doubles*/public static double deviation(double[] x){double mean = mean(x);double sum = 0.0;for(int i = 0;i < x.length;i++){sum += Math.pow(mean-x[i],2);}double dev = Math.sqrt(sum/x.length);return dev;}/*compute the mean of double values*/public static double mean(double[] x){double sum = 0.0;for(int i = 0;i < x.length;i++){sum += x[i];}double mean;mean = sum/x.length;return mean;}}
  • 逆置数组
import java.util.Arrays;/*** Created by lixuefei on 2017/4/24.* 6.12*/
public class Reverse {public static void main(String[] args){int[] array = {1,2,3,4,5,6};System.out.println("Original Array is:" + Arrays.toString(array) + "\n The new Array is " + Arrays.toString(reverse(array)));}public static int[] reverse(int[] array){int temp;for(int i = 0;i < array.length/2;i++){temp = array[i];array[i] = array[array.length-i-1];array[array.length-i-1] = temp;}return array;}
}

Java语言程序设计基础(3)【数组】相关推荐

  1. 《JAVA 语言程序设计基础篇》chapter 5 方法

    <JAVA 语言程序设计基础篇>chapter 5 方法 依然是先回顾一下上一章的内容 主要是关于循环语句 这里做一个有关于蒙特卡罗模拟有关的练习 先是一段背景介绍 蒙特卡罗方法通过抓住事 ...

  2. java语言读后感_《Java语言程序设计基础篇》读后感锦集

    <Java语言程序设计基础篇>是一本由梁著作,机械工业出版社出版的平装图书,本书定价:58.00元,页数:500,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助. <Jav ...

  3. Java语言程序设计基础篇-第10版-第一部分-程序设计基础)

    Java程序语言设计(基础篇)-第10版 第一部分 程序设计基础 第1章 计算机.程序和Java概述 1.1 引言 程序设计就是创建(或者开发)软件,软件也称为程序. 简言之,软件包含了指令,告诉计算 ...

  4. Java语言程序设计基础篇原书第十版第二章编程练习题答案

    程序如有问题,及时联系博主哦~博主会贴出所有带有星号的题目,以及一些典型的例子,希望能够帮助到同学们,也希望同学们都学好java语言. 2.1将摄氏温度转换为华氏温度 package nameyu;i ...

  5. Java语言程序设计基础篇(第十版)课后习题答案 - 第一章

    第一章:计算机.程序和Java概述 复习题 1.1 什么是硬件和软件? 答:硬件指计算机中可见的物理部分:软件是计算机中看不见的指令,这些指令控制硬件并使硬件完成特定的任务. 1.2 列举计算机的5个 ...

  6. Java 语言程序设计基础(笔记一) ( 专升本自考 ,九天速成 )

    第一章:JAVA概述 第一节:JAVA简介 JAVA语言得特点:JAVA是简单的.面向对象得语言,并具有分布性.安全性和健壮性. ①语法简单,功能强大,安全可靠       ②与平台无关        ...

  7. java语言程序设计基础篇课后答案_《Java语言程序设计:基础篇》课后复习题答案-第十五章.pdf...

    <Java语言程序设计:基础篇>课后复习题答案-第十五章 Chapter15Graphics 1. Theycoordinateshouldincreaseandthexcoordinat ...

  8. java语言程序设计基础篇14.6答案_《Java语言程序设计-基础篇》答案-第15章

    第15章 异常和断言 复习题 15.1 答:略 15.2 答:声明异常是为了在方法中产生异常时,以便通知方法的调用者. 在方法声明的头部使用关键字throws 声明,一个方法可以声明多个异常.如: p ...

  9. Java语言程序设计基础篇 循环(四)练习

    *4.21(计算不同利率下的贷款)编写程序,让用户输入贷款总额及以年为单位的贷款期限,以1/8为递增量,显示从5%到8%的利率下每月支付额和总偿还额.假设输入贷款总量为10 000,还贷期限为5年,所 ...

最新文章

  1. QOS的qmtoken 1
  2. 华为诺亚最新视觉Transformer综述
  3. forward和redirect有什么区别?
  4. 软件项目管理课后题下载【共5个章(1、3、4、5、6)】
  5. php 监听端口数据客户端ip_PHP做端口监听示例代码
  6. 【LeetCode】【HOT】20. 有效的括号(栈)
  7. @程序员,正在自学机器学习?这六点一定要牢记!
  8. 【实验】简单实时300点采样逻辑
  9. 用了Python这么久,你连这个都没试过?
  10. 英特尔固态硬盘测试软件,英特尔固态硬盘工具(Intel SSD Datacenter Tool)
  11. 网页设计常用字体(转)
  12. 百词斩平板Android,百词斩ipad电脑版
  13. JavaScript数组求和
  14. 阿里巴巴Java开发手册终极版v1.3.0(百度网盘资源)
  15. android手机截图,安卓手机怎么截屏,安卓手机怎么截屏幕图OPPO
  16. 求一个数的最大真约数
  17. css气泡图片上下浮动
  18. Jrebel、IDEA的激活与Springloaded使用
  19. 微信小程序:更改字体(text)和图标(icon)的颜色以及RGB颜色值与十六进制颜色码之间的转换
  20. 系统平台:新店如何打造爆款

热门文章

  1. 解决跨站脚本注入,跨站伪造用户请求,sql注入等http安全漏洞
  2. 【Matlab】MATLAB打包生成.p文件(保护知识产权+需要matlab开发环境)
  3. 机器人足球仿真第一次作业
  4. 爬一爬哪个操蛋的药品网站,建立药品库
  5. 小米推出物联网软件平台Xiaomi Vela;苹果11月11日再开发布会,自研处理器Mac有望推出;华为:计划在上海建芯片厂...
  6. 3ds Max随堂笔记 可编辑多边形(高级建模)
  7. 陀螺世界一键端php源码,陀螺世界源码【运营版】
  8. 全球近400家企业和项目宣布加入BSV生态
  9. 悟透JavaScript _转载
  10. go语言 第三方包安装方法_Adobe PL 2020 软件下载安装包教程(附下载方法)