首页 > 编程语言 >【参考答案】java基础练习:数组(一维、二维、传值传地址)

【参考答案】java基础练习:数组(一维、二维、传值传地址)

时间:2023-01-30 13:34:12浏览次数:51  
标签:java nums int System length println 参考答案 传值 out

一维数组

定义一个int类型数组,动态赋值,然后将数组中元素反转,最后输出,要求:动态赋值定义方法;反转定义方法

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
* @公众号 : 全栈测试笔记
* @描述 : <>
*/
public class Test {
public static void main(String[] args) {
int[] nums = new int[3];
setValue(nums);
System.out.println("动态赋值后:" + Arrays.toString(nums));
reverseArray(nums);
System.out.println("数组反转后:" + Arrays.toString(nums));
}

public static void setValue(int[] nums){
Scanner sc = new Scanner(System.in);
for (int i=0;i<nums.length;i++){
System.out.print("请输入数组第" + (i+1) +"个元素:");
nums[i] = sc.nextInt();
}
}

public static void reverseArray(int[] nums){
int len = nums.length;
for (int i=0;i<len/2;i++){
int temp = nums[len-1-i];
nums[len-1-i] = nums[i];
nums[i] = temp;
}
}
}

 

【参考答案】java基础练习:数组(一维、二维、传值传地址)_java

 

有一个数组[1, 3, 66, 16, 28, 666, 168],循环输出数组中的元素并计算所有数的总和,并将最大值放到最前面,最小值放到最后面,然后输出数组

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
* @公众号 : 全栈测试笔记
* @描述 : <>
*/
public class Test {
public static void main(String[] args) {
int[] nums = {1, 3, 66, 16, 28, 666, 168};

int sum = 0;
for (int num : nums) {
System.out.print(num + " ");
sum += num;
}
System.out.println("\n总和:" + sum);

int maxIndex = 0, minIndex = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] > nums[maxIndex]) {
maxIndex = i;
}
if (nums[i] < nums[minIndex]) {
minIndex = i;
}
}

System.out.println("最大值的索引:" + maxIndex);
System.out.println("最小值的索引:" + minIndex);

if (maxIndex==nums.length && minIndex==0){
int temp=nums[0];
nums[0]=nums[maxIndex];
nums[maxIndex]=temp;
System.out.println(Arrays.toString(nums));
} else if (maxIndex==nums.length){
int temp=nums[0];
nums[0]=nums[maxIndex];
nums[maxIndex]=temp;

temp=nums[nums.length-1];
nums[nums.length-1]=nums[minIndex];
nums[minIndex]=temp;
} else if (minIndex==0){
int temp=nums[nums.length-1];
nums[nums.length-1]=nums[minIndex];
nums[minIndex]=temp;


temp=nums[0];
nums[0]=nums[maxIndex];
nums[maxIndex]=temp;

int temp=nums[0];
nums[0]=nums[maxIndex];
nums[maxIndex]=temp;

temp=nums[nums.length-1];
nums[nums.length-1]=nums[minIndex];
nums[minIndex]=temp;
}
System.out.println("交换后:" + Arrays.toString(nums));
}
}

 

【参考答案】java基础练习:数组(一维、二维、传值传地址)_System_02

 

增强for

输出数组的值[1, 3, 66, 16, 28, 666, 168]

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
* @公众号 : 全栈测试笔记
* @描述 : <>
*/
public class Test {
public static void main(String[] args) {
int[] nums = {1, 3, 66, 16, 28, 666, 168};
// 普通的for循环
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
System.out.println();
// 增强for循环
for (int n : nums) {
System.out.println(n);
}
System.out.println(Arrays.toString(nums));
}
}

  

传值、传地址

下面输出结果是?

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
* @描述 : <>
*/
public class Test {
public static void main(String[] args) {
int a = 5;
int b = a;
b = 8;
System.out.println(a);
System.out.println(b);


int[] c = { 1,2,3 };
int[] d = c;
d[0] = 666;
System.out.println(Arrays.toString(c));
System.out.println(Arrays.toString(d));

change(a,c);
System.out.println(a);
System.out.println(Arrays.toString(c));

}

public static void change(int i, int[] array) {
i = 666;
array[array.length - 1] = 999;
System.out.println(i);
System.out.println(Arrays.toString(array));
}
}

 

【参考答案】java基础练习:数组(一维、二维、传值传地址)_System_03

基本数据类型是传值

数组是传地址 

 

二维数组(含冒泡)

输出二维数组的每个元素,int[][] d = { { 1, 2, 9 }, { 5 }, { 1, 3 }, { 9, 7, 0 } };

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
* @公众号 : 全栈测试笔记
* @描述 : <>
*/
public class Test {
public static void main(String[] args) {
int[][] d = { { 1, 2, 9 }, { 5 }, { 1, 3 }, { 9, 7, 0 } };
for (int i = 0; i < d.length; i++) {
for (int j = 0; j < d[i].length; j++) {
System.out.print(d[i][j] + "\t");
}
System.out.println();
}
}
}

 

【参考答案】java基础练习:数组(一维、二维、传值传地址)_数组_04

 

有2个班,每个班有3名学生,提示用户分别输入学生的成绩,将数据保存到二维数组中,并计算每个班的平均分、全校的最高分、最低分,最后输出平均分最高的班以及对应的平均分 

package com.qzcsbj;

import java.util.Scanner;

public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);

int[][] scores = new int[2][3];
double maxavg = 0;
int maxavgClass = 0;
int i = 0;
for (; i < scores.length; i++) {
System.out.println("-------请输入第" + (i + 1) + "个班级的学生成绩-------");
double sum = 0, avg = 0;
for (int j = 0; j < scores[i].length; j++) {
System.out.print("请输入第" + (j + 1) + "名学生的成绩:");
scores[i][j] = input.nextInt();
sum += scores[i][j];
}
avg = sum / 3;
if (avg>maxavg){
maxavg=avg;
maxavgClass= i+1;
}
System.out.println("第" + (i + 1) + "个班级的平均分为:" + avg);
}

int max = scores[0][0], min = scores[0][0];
for (int i2 = 0; i2 < scores.length; i2++) {
for (int j = 0; j < scores[i2].length; j++) {
if (scores[i2][j] > max) {
max = scores[i2][j];
}
if (scores[i2][j] < min) {
min = scores[i2][j];
}
}
}
System.out.println("最高分:" + max);
System.out.println("最低分:" + min);
System.out.println("最高平均分班级为:" + maxavgClass +"班,平均分为:" + maxavg);

}
}

  

【参考答案】java基础练习:数组(一维、二维、传值传地址)_数组_05

 

 

冒泡实现排序,[9,6,4,5,3],输出:[3, 4, 5, 6, 9],要求打印每一轮每一次冒泡后的结果

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
* @公众号 : 全栈测试笔记
* @描述 : <>
*/
public class Test {
public static void main(String[] args) {
int[] nums = {9,6,4,5,3};

// 外层循环控制比较的轮数
for (int i = 0; i < nums.length - 1; i++) {
// 内层循环控制每一轮比较的次数
for (int j = 0; j < nums.length - i - 1; j++) {
if (nums[j] > nums[j + 1]) {
int temp = nums[j + 1];
nums[j + 1] = nums[j];
nums[j] = temp;
System.out.println("第" + (i + 1) + "轮,第" + (j+1) + "次:" + Arrays.toString(nums));
}
}
System.out.println("==第" + (i + 1) + "轮结果:" + Arrays.toString(nums));
}

System.out.println(">>排序后的数组:" + Arrays.toString(nums));
}
}

 

【参考答案】java基础练习:数组(一维、二维、传值传地址)_System_06

 

不定长参数

不定长参数的本质是数组

 

笔试题

数组中有一个数字出现的次数超过数组长度的一半

两种方法

public static void main(String[] args) {
int[] nums = {1,2,3,2,2,2,5,4,2};
System.out.println(getFromSort(nums));
System.out.println(getFromMap(nums));
}

public static int getFromSort(int[] array){
Arrays.sort(array);
System.out.println(Arrays.toString(array));
int mid = array.length/2;
int midvalue = array[mid];
int times = 0;
for(int i=0;i<array.length;i++){
if (array[i] == midvalue){
times ++;
if (times>mid){
return array[i];
}
}
}
return -1;
}

public static int getFromMap(int[] array){
int mid = array.length/2;
Map<String, Integer> map = new HashMap<>();
for(int i=0;i<array.length;i++){
String key = array[i] + "";
if(map.get(key)==null){
map.put(key,1);
}else{
map.put(key,map.get(key)+1);
}

if (map.get(key)>mid){
return Integer.parseInt(key);
}
}
return -1;
}


 

__EOF__


本文作者:持之以恒(韧)

标签:java,nums,int,System,length,println,参考答案,传值,out
From: https://blog.51cto.com/qzcsbj/6026253

相关文章

  • 【参考答案】java基础练习:循环结构(while、do...while、for、break、continue、return
    while while实现:输出比i(i=5)小的正整数packagecom.qzcsbj;publicclassTest{publicstaticvoidmain(String[]args){inti=5;while(--i>0){......
  • 【参考答案】java基础练习:选择结构(if、switch)
    if:if...else...及if嵌套提示用户输入三个整数,判断并输出最大值、最小值 packagecom.qzcsbj;importjava.util.Scanner;publicclassTest{publicstaticvoidmain(S......
  • 【参考答案】java基础练习:变量、数据类型、输入、输出、运算符
     练习1:判断输入的值是否是偶数,另外,要处理输入错误(目的:熟悉输入、输出,特别是Scanner对象的方法)packagecom.qzcsbj;importjava.util.Scanner;publicclassTest{publi......
  • 为什么java开发平台有前途?
    在大数据时代,随着计算机应用的普及以及办公自动化的兴盛发展,提质增效的低代码开发平台迎来了快速发展时期。今天就给大家介绍java开发平台,通过本文介绍可以清楚地了解低代......
  • airlift java rest 服务框架
    airlift是一个轻量,快速的javarest服务开发框架,属于trino的基础框架,airlift集成了不少轻量的工具包同时包含了不少不错的实践(比如配置管理,组件生命周期管理,http客户端,......
  • java 高质量编程,正反例分析
    导读世界上只有两种物质:高效率和低效率;世界上只有两种人:高效率的人和低效率的人。----萧伯纳常量&变量直接赋值常量,禁止声明新对象直接赋值常量值,只是创建了一个对象引用,而......
  • 【Java项目推荐】值得写到简历上的项目--黑马点评
    优惠卷秒杀​​前言​​​​优惠券秒杀​​​​实现优惠券秒杀下单​​​​超卖问题​​​​一人一单​​​​分布式锁​​​​redis中加锁的一些特殊情况​​​​手动实现......
  • Java锁
    Java锁悲观锁概述认为自己在使用数据的时候一定有别的线程跟修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。synchronized关键字和Lock的实现类都......
  • Java I/O经典代码实例
    packageIO;importjava.io.*;publicclassFileDirectoryDemo{publicstaticvoidmain(String[]args){//如果没有指定参数,则缺省为当前目录。if(args.length==......
  • java整合hudi-client 0.11.1
    1.Linux部署hudi环境(1)安装maven-3.5.4、jdk1.8环境#解压maven,重命名tar-xfapache-maven-3.5.4-bin.tar.gz-C/usr/local/mvapache-maven-3.5.4maven#解压jdk,重命名ta......