Java基础之数组练习
1、java能动态分配数组吗?
答:可以。int i = 12;int[] myInt = new int[i];
2、我怎么知道数组的长度?
答:'.length'属性获取
3、数组有没有length()这个方法? String有没有length()这个方法
答:数组没有length()这个方法,有length的属性。String有length()这个方法
4、Java中的任何数据类型都可以使用System.out.pritln方法显示
对基本数据类型而言,输出的往往是变量的值;对于像数组这一类复杂的数据类型,输出的是其堆空间中存储位置的hashCode值
5、操作二维数组的注意点
操作二维数组不应使用常数来控制维数。具体方法是array.length表示行数,array[row].length来表示row行的列数。这样当数组行数和列数不相等时,代码可以自动调整为正确的值。
6、显示输出:
String[] stringArray = new String[3]; // 各元素的值默认为null
for (int i = 0; i < stringArray.length; i++) { // 对各元素进行初始化,但没有赋值。stringArray[i] = new String();System.out.println(stringArray[i]);
}
答案:空 (有别于null)
7、面试题目:创建一个长度为6的int型数组,要求取值为1-30,同时元素值各不相同
class ArrayExer {public static void main(String[] args) {//方式一:// int[] arr = new int[6];// for (int i = 0; i < arr.length; i++) {// [0,1) [0,30) [1,31)// arr[i] = (int) (Math.random() * 30) + 1;//// boolean flag = false;// while (true) {// for (int j = 0; j < i; j++) {// if (arr[i] == arr[j]) {// flag = true;// break;// }// }// if (flag) {// arr[i] = (int) (Math.random() * 30) + 1;// flag = false;// continue;// }// break;// }// }//// for (int i = 0; i < arr.length; i++) {// System.out.println(arr[i]);// }//方式二:int[] arr = new int[6];for (int i = 0; i < arr.length; i++) {// [0,1) [0,30) [1,31)arr[i] = (int) (Math.random() * 30) + 1;for (int j = 0; j < i; j++) {if (arr[i] == arr[j]) {i--;break;}}}for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}}
8、回形数格式方阵的实现
从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出:
1 2 4 3
输入数字3,则程序输出:
1 2 3 8 9 4 7 6 5
输入数字4, 则程序输出:
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
方式一:
class RectangleTest {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("输入一个数字");int len = scanner.nextInt();int[][] arr = new int[len][len];int s = len * len;/** k = 1:向右 k = 2:向下 k = 3:向左 k = 4:向上*/int k = 1;int i = 0, j = 0;for (int m = 1; m <= s; m++) {if (k == 1) {if (j < len && arr[i][j] == 0) {arr[i][j++] = m;} else {k = 2;i++;j--;m--;}} else if (k == 2) {if (i < len && arr[i][j] == 0) {arr[i++][j] = m;} else {k = 3;i--;j--;m--;}} else if (k == 3) {if (j >= 0 && arr[i][j] == 0) {arr[i][j--] = m;} else {k = 4;i--;j++;m--;}} else if (k == 4) {if (i >= 0 && arr[i][j] == 0) {arr[i--][j] = m;} else {k = 1;i++;j++;m--;}}}// 遍历for (int m = 0; m < arr.length; m++) {for (int n = 0; n < arr[m].length; n++) {System.out.print(arr[m][n] + "\t");}System.out.println();}}
}
方式二:
class RectangleTest1 {public static void main(String[] args) {int n = 7;int[][] arr = new int[n][n];int count = 0; // 要显示的数据int maxX = n - 1; // x轴的最大下标int maxY = n - 1; // Y轴的最大下标int minX = 0; // x轴的最小下标int minY = 0; // Y轴的最小下标while (minX <= maxX) {for (int x = minX; x <= maxX; x++) {arr[minY][x] = ++count;}minY++;for (int y = minY; y <= maxY; y++) {arr[y][maxX] = ++count;}maxX--;for (int x = maxX; x >= minX; x--) {arr[maxY][x] = ++count;}maxY--;for (int y = maxY; y >= minY; y--) {arr[y][minX] = ++count;}minX++;}for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr.length; j++) {String space = (arr[i][j] + "").length() == 1 ? "0" : "";System.out.print(space + arr[i][j] + " ");}System.out.println();}}
}
9、下面数组定义正确的有:
A.String strs[] = { ‘a’ ‘b’ ‘c’};
B.String[] strs = {“a”, “b”, “c”};
C.String[] strs = new String{“a” ”b” ”c”};
D.String strs[] = new String[]{“a”, “b”, “c”};
E.String[] strs = new String[3]{“a”, “b”, “c”};
答案:
B_D
10、写出结果
class Demo{public static void main(String[] args){String foo="blue"; boolean[] bar=new boolean[2]; if(bar[0]){ foo="green";} System.out.println(foo);}
}
[输出]:blue
11、练习Arrays工具类的使用:
1、从键盘输入本组学员的成绩,放到数组中
2、用for循环显示所有学员的成绩
3、排序:从低到高
4、查找是否有正好60分的,如果有返回位置
5、复制成绩最低三名构成新数组
6、用工具类打印成绩最低三名成绩
/*
练习:
1、从键盘输入本组学员的成绩,放到数组中
2、用foreach显示所有学员的成绩
3、排序:从低到高
4、查找是否有正好60分的,如果有返回位置
5、复制成绩最低三名构成新数组
6、用工具类打印成绩最低三名成绩
*/
import java.util.Scanner;
import java.util.Arrays;class TestArraysExer{public static void main(String[] args){//1、声明一个数组并创建一个数组int[] scores = new int[5];//2、从键盘输入成绩Scanner input = new Scanner(System.in);for(int i=0; i<scores.length; i++){//成绩存在数组的元素中//为元素赋值System.out.print("请输入第" + (i+1) + "个学员的成绩:");scores[i] = input.nextInt();}//3、显示成绩//用foreach显示所有学员的成绩System.out.println("本组学员的成绩如下:");for(int s = 0; s < scores.length;s++){System.out.println(scores[s]);}//4、排序:从低到高Arrays.sort(scores);System.out.println("排序后的结果:" + Arrays.toString(scores));//5、查找60分int index = Arrays.binarySearch(scores, 60);if(index<0){System.out.println("没有正好60分的");}else{System.out.println("60分的索引位置:" + index);}//6、复制成绩最低三名构成新数组//int[] newArray = Arrays.copyOfRange(scores, 0, 3);int[] newArray = Arrays.copyOf(scores, 3);//7、用工具类打印成绩最低三名成绩System.out.println("成绩最低的三名同学是:" + Arrays.toString(newArray));}
}
12、一维数组a[],用java代码将数组元素顺序颠倒
public static void main(String[] args) {int[] a = new int[] { (int) (Math.random() * 1000),(int) (Math.random() * 1000), (int) (Math.random() * 1000),(int) (Math.random() * 1000), (int) (Math.random() * 1000) };System.out.println(a);System.out.println(Arrays.toString(a));swap(a);System.out.println(Arrays.toString(a));}public static void swap(int a[]) {int len = a.length;for (int i = 0; i < len / 2; i++) {int tmp = a[i];a[i] = a[len - 1 - i];a[len - 1 - i] = tmp;}
}
Java基础之数组练习相关推荐
- Java 基础 利用数组来实现银行注册开户、存钱、取钱
Java 基础 利用数组来实现银行注册开户.存钱.取钱 1.主界面 放置于BankSystem类中 思路: (1)用输入语句完成主界面的编写 (2)用Scanner实现键盘录入数据 (3)用switc ...
- Java基础-遍历数组
Java基础-遍历数组 1.语法简介 2.一维数组 3.二维数组 4.三维数组 1.语法简介 在Java中,对for语句的功能给予了扩充.加强,以便更好的遍历数组. 语法格式如下: for(声明循环变 ...
- Java基础之数组与集合
Java基础之数组与集合 一.数组 二.冒泡排序算法 三.选择排序算法 四.二维数组 五.Arrays 工具 六.宠物管理系统 七.集合 Collection 八.List 九.重写 equals 方 ...
- 一文带你深入理解【Java基础】· 数组
写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...
- java基础(十) 数组类型
###1. 数组类简介 在java中,数组也是一种引用类型,即是一种类. 我们来看一个例子,理解一下数组类: public static void main(String[] args) {Class ...
- Java基础:数组的声明,循环,赋值,拷贝。
数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号. 声明一个数组,并没有将a正在的初始化为一个数组 ...
- java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5];Scanner inp ...
- java基础_数组常用算法
求数组最大值代码如下 package java_test; /*求数组的最大值* */ class Sdent{public void inputMax(int [] a){int max=a[0]; ...
- 第一阶段:Java基础之数组
注意点: @Java语言是把数组当作一个"对象"来看待的 @把数组分为两部分看,一部分是数组的引用,放置在栈内存中,一部分是数组对象,放置在堆内存中 @数组的引用可以指向任何有效的 ...
最新文章
- LeetCode实战:最长回文子串
- 编程方法学笔记:karel
- 第一阶段:Java基础之数组
- E820-DTU模拟量无线数传电台:物联网工业现场无线数传应用
- highlight.js css,JS库之Highlight.js的用法详解
- GWR4软件怎么用+结果解读+结果在ArcGIS中可视化
- 关于:在 Office 2021 中自定义模板
- lammps教程:如何更清晰观察晶体结构?Ovito渲染技巧介绍
- STM32cubemx教程及STM32入门(一)
- 2022年调味品行业研究报告
- 自恢复保险丝选型说明
- 在HTML中 怎么一张图片上在放一张图片,css sprites把很多小图集成在一张图片上...
- 22计算机考研上岸个人经验近万字分享(11408初试360分)
- Qt 设置父控件样式不影响子控件的解决方法
- 单剂量给药下仓室药物模型半衰期的计算
- excel最强教科书电子版_Excel最强教科书(完全版全彩印刷)
- Android手游外挂入侵----寓攻于守,方能破敌
- VLOOKUP函数反向查找(需要用IF函数把数据源倒置一下)
- 《诚信》——赤兔之死
- 数据库中各表关联图及其说明_如何在图中思考:图论及其应用的说明性介绍