说明:图片转存失败,完整版pdf见资源
Java基础50题2023最新版
基础问答15题
1.【基本概念问答】
请问Java语言是跨平台的吗?JVM是跨平台的吗?为什么?
Java语言是跨平台的,JVM不跨平台。
因为Java编写的文件都会被编译成与平台无关的字节码,不管哪一个平台字节码都在JVM上执行,所以Java可以跨平台。而不同平台的JVM是不同的,它们只是提供了相同的接口。
2.【环境变量配置问答】
为什么要配置Java环境变量?不配置环境变量可不可以命令行编译执行Java代码?请尝试配置环境变量,达到在命令行(cmd)窗口输入 qq 命令就能启动qq的效果。(效果截图)
为了让系统可以在任意目录下执行jdk安装目录下的exe文件。
可以,但需要将目录转到javac.exe的安装目录下。
3.【命令行编程】
新建一个Java文件, 然后手写Hello World程序。(要求记事本完成,该题目提交 Helloworld程序的代码及命令行cmd运行截图即可)
public class MHello{
public static void main(String[] args){
System.out.println("hello java");
}
}
4.【进制转换】
将67转换为二进制、八进制、十六进制。再将0b0100101(二进制)、0345(八进制)、0Xef(十六进制)转换为十进制。注:该题无需用写代码,在纸上手算一下过程,拍照附在文档中提交作业。
5.【原码补码反码】
对于一个8位原码,01101010和11000110,求它们的补码。已知补码01101010和11000110,求它们的原
码。(要求如题4)注:进制和原码等概念属于计算机编程基础知识,建议了解并熟悉它。
6.【数据类型转换】
语句 byte b = 300; 编译能通过吗?如果不能为什么呢?怎样让它通过编译呢?(作为简答题说明一下即可)
不能通过编译,因为byte类型占8个位,表示范围-128~127。
强制类型转换可以通过编译:byte b = (byte)300;
7.【算术运算符】
以 int a = 0; 语句为前提, a = a + 0.1; 和a += 0.1; 两条语句都能正常运行吗?两者有什么区别?(仍作为简答题回答)
a=a+0.1;不能通过编译,a+0.1这个表达式的结果会隐式转换位double类型,double赋值给int会出错。
a+=0.1;可以通过编译,但结果精度丢失。相当于int a = (int)(a+0.1)
8.【浮点数】
float a = 0.1F; 和 double b = 0.1; 这两条语句定义的浮点数a和b,请问它们相等嘛?为什么?
不相同,数据类型不同,在内存中的二进制表示也不同
9.【位运算符】
给出任意一个 int 类型的正整数,如何快速判断该整数的值,是否是2的整数次幂?(简答题,考虑位运算符)
计算 intNum & (intNum-1),结果为0则是2的整数次幂。
比如intNum = 16 , 10000 & 01111,结果为0
10.【表达式】
对于一个变量a,给出一个表达式 a + “hello” ,结果的数据类型是什么?
+和字符串连接是拼接符号,结果是String类型
11.【读程序题】
读下列代码,指出输出结果以及原因。
int a = 10;
int b;
System.out.println(b = a + 10);
结果输出20,赋值表达式的返回值就是等号左边的值
12.【标识符命令规范】
分析以下标识符的字符串组成,哪些是符合语法的标识符,哪些不合法?请在这道题下面附上符合语法的标识符命名规范:
- 1myName 不能用数字开头
- 你好% 不能出现中文
- My_name
- Points
- $points
- _sys_ta
- OK123
- _23b#
- _3_
- main 保留字
- class 保留字
13.【标识符命令规范】
标识符的命名除了语法要求外,更重要的是符合约定俗成的规范。下列标识符的字符串组成,都是符合语法要求的,请问哪些是符合约定俗成命名规范的?哪些不符合?请在这道题下面附上符合约定俗成规范的Java标识符命名规范。(根据不同语法结构给出)
类名:
- demo 类名开头没大写
- test 同上
- Student
- Student_ 不能以_结束
- program1 类名开头要大写
- MYDemo MyDemo
- myDemo 同上
- XueSheng
变量名:
- age
- nianLing
- myName
- _name 不能以_开头
- Variable variable
包名:
- com.baidu
- Com.Baidu 包名用小写字母
- bao.ceshi
注:标识符命名规范相当重要,请大家查阅老师给的文档,先自行学习!
14. 【注释】
注释的作用是什么?注释会对程序的运行产生影响嘛?注释的内容会存在于Java代码编译执行的哪一部分?
写代码整理思路;读代码,维护项目。不会产生影响。注释不会参与编译执行。
15. 【键盘输入】
如果我想在Java程序中进行键盘输入,提升程序的扩展性。需要按几个步骤进行?请写出步骤
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
编程基础30题
1.【回文数】
打印5位数中的所有回文数,每行打印10个数。最后统计一下一共有多少个5位回文数。
注:回文数即正反读都是一个数,5位数的话,只要个位与万位相同,十位与千位相同就是一个回文数。
public static void main(String[] args) {
// 打印5位数中所有的回文数
int num=0; //记录总共多少个回文数
for(int i = 10000; i < 100000; i++){
//如果万位=个位,继续判断
if(i / 10000 == i % 10){
int qian = i / 1000 % 10;
int shi = i % 100 / 10;
//判断千位=十位
if(qian == shi){
num++;
System.out.print(i+" ");
if(num % 10 == 0) System.out.println();
}
}else continue;
}
System.out.println("一共有" + num +"个五位回文数");
}
2.【键盘录入】
根据键盘录入的数值1、2、3、4…7输出对应的星期一、星期二、星期三…星期日。(考虑使用switch)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
switch (sc.nextInt()){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default: break;
}
}
}
3.【if多分支】
键盘录入一个学生成绩(用int表示),自动输出该同学的成绩评级。
学生的分数取值范围[0,100]
分数大于等于90的,评级"优秀";
分数大于等于80,小于90的,评级"良好";
分数大于等于70,小于80的,评级"中等";分数大于等于60,小于70的,评级"及格";
分数小于60的,评级"不及格";
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score >= 90)
System.out.println("优秀");
else if(score >= 80 && score < 90)
System.out.println("良好");
else if(score >= 70 && score < 80)
System.out.println("中等");
else if(score >= 60 && score < 70)
System.out.println("及格");
else if(score < 60)
System.out.println("不及格");
}
}
4.【水仙花数】
请打印出所有的水仙花数。注:所谓的"水仙花数"是指一个三位数,其各位数字的立方和等于该数本身。例如153是一个"水仙花数",因为153 = 1的三次方 + 5的三次方 + 3的三次方。(使用for循环遍历一下就出来了)
public static void main(String[] args) {
for(int i = 100;i < 1000;i++){
int ge = i % 10;
int bai = i / 100;
int shi = i / 10 % 10;
if(Math.pow(ge,3) + Math.pow(shi,3) + Math.pow(bai,3) == i)
System.out.println(i);
}
}
5.【求素数】
判断101-200之间有多少个素数,并输出其中所有素数。
注:素数即是除了1和它本身以外不再有其他因数的自然数。程序中可以用这个数,遍历除以2到这个数减去1。如果能够被整除,则表明此数不是素数,反之是素数
public static void main(String[] args) {
int count = 0;
for (int i = 101; i <= 200; i++) {
if(isPrime(i)){
count++;
System.out.println(i);
}
}
System.out.printf("101~200一共%d个素数",count);
}
public static boolean isPrime(int num){
for (int i = 2; i <= Math.sqrt(num); i++) {
if(num % i == 0)
return false;
}
return true;
}
6.【嵌套for循环】
打印下列图案(等腰三角形)要求,根据键盘录入的行数,决定等腰三角形的行数
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int row = sc.nextInt();
for (int i = 1; i <= row; i++) {//一共打印多少行
//先打印空格row - i个
for (int k = 0; k < row - i; k++) {
System.out.printf(" ");
}
for (int j = 0; j < 2 * i -1; j++) {//每行打印2i - 1个*
System.out.printf("*");;
}
System.out.println();
}
}
7.【嵌套for循环】
打印九九乘法表。(和题6基本一样)
public static void main(String[] args) {
for(int i = 1;i < 10;i++){
for(int j = 1;j <=i;j++){
System.out.print(j+" * "+i+" = "+i*j+" ");
}
System.out.println();
}
}
8.【求完数】
一个数如果恰好等于它的所有真因子(即除了自身外的所有因数)之和,这个数就称为"完数"。请编程求出1000以内的所有完数
public static void main(String[] args) {
for(int i = 2;i <= 1000;i++){
int num=0;//因数和
for(int j = 1;j < i;j++){//计算除自身以外所有因数的和
if(i % j ==0){//j是i的因数
num += j;
}
}
if(num == i)
System.out.println(i);
}
}
9.【求不重复数字】
有1、2、3、4一共四个数字,能组成多少个不相等且无重复数字的三位数?都是多少?
注:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的就可以了
public static void main(String[] args) {
int num = 0;//存储三位数
int sum = 0;//几种三位数
//百位数i的情况
for (int i = 1; i <= 4; i++) {
//十位数是i1
for (int i1 = 1; i1 <= 4; i1++) {
if(i1 == i) continue;
//个位数是i2
for (int i2 = 1; i2 <= 4; i2++) {
if(i2 == i1 || i2 == i) continue;
num = i * 100 + i1 * 10 + i2;
System.out.print(num + "\t");
sum++;
}
}
System.out.println();
}
System.out.println("一共" + sum + "种结果");
}
10.【根据输入求输出】
键盘录入一个正整数,请求:1.它是几位数?2.逆序打印出各位数字
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long num = sc.nextLong();
int n = 0;//计算num是几位数
while(num != 0){
System.out.print(num % 10 + " ");
num /= 10;
n++;
}
System.out.println("\n" + "是" + n + "位数");
}
11.【数列的前n项和】
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
注:提前告诉你答案是 32.66026079864164
public static void main(String[] args) {
//求数列的前20项之和2/1,3/2,5/3,8/5,13/8,21/13.....
double fenzi = 2;
double fenmu = 1;
double sum = fenzi / fenmu;
for (int i = 0; i < 19; i++) {
double tmp = fenmu;
//下一项的分母 = 分子
fenmu = fenzi;
//下一项的分子 = 分子 + 分母
fenzi += tmp;
sum += fenzi / fenmu;
}
System.out.println(sum);
}
12.【累加】
求前n个数的和,其中n>0。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//求前n个数的和,其中n>0。
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sum = 0;
for(int i = 1;i <= n;i++){
sum += i;
}
System.out.println("前"+n+"个数之和是"+sum);
}
}
13.【累乘】
求前n个数的积,其中n>0
import java.math.BigInteger;
import java.util.Scanner;
import static java.math.BigInteger.*;
public class Main {
public static void main(String[] args) {
//求前n个数的积,其中n>0。
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
//long存储不下,调用BigInteger的静态方法valueOf
BigInteger bigMulti = BigInteger.valueOf(1);
for(int i = 1;i <= n;i++){
bigMulti = bigMulti.multiply(BigInteger.valueOf(i));
}
System.out.println("前"+n+"个数之积是"+bigMulti);
}
}
14.【求最大值】
分别用if和三目运算符求三个数的最大值。比较一下两种方式,哪种比较好?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
int mmax = num1;//存储最大值
if(mmax < num2)
mmax = num2;
if(mmax < num3)
mmax = num3;
System.out.println("if求三个数中的最大值是" + mmax);
mmax = num1 < num2 ? num2 : num1;
mmax = mmax < num3 ? num3: mmax;
System.out.println("三目运算符求三个数中的最大值是"+mmax);
}
}
用if可读性更高,易于扩展。用三目运算符代码更简洁
15.【根据条件求数】
一个整数,它加上100或者268后都是一个完全平方数,请问在1万以内,这样的数有几个,分别是多少?
注:使用 Math.sqrt(double a) 方法可以求a的平方根。
public static void main(String[] args) {
//10000以内的完全平方数
int count = 0;//统计个数
for (int i = 1; i <= 10000; i++) {
int num = (int)Math.sqrt(i);
if(num * num == i){
count++;
System.out.println(i);
}
}
System.out.println("1-10000一共有" + count + "个完全平方数");
}
16.【求奇数和】
求100以内的所有奇数/偶数的和
public static void main(String[] args) {
int evenSum = 0, oddSum = 0;
for (int i = 0; i <= 100; i++) {
if(i % 2 == 0)
evenSum += i;
else oddSum += i;
}
System.out.println("100以内偶数和:" + evenSum + ";奇数和:" + oddSum);
}
17.【自由落体】
假如一个小球从100米高度自由落下,每次落地后就反跳回原高度的一半。那么求它在第10次落地时,共经过多少米?第10次反弹多高?
public class Main {
public static void main(String[] args) {
//第一次落地经过100
double distance = 100;//总共的路程
double height = 100;//每次反弹的高度
//从第二次开始计算
for (int i = 2; i <= 10; i++) {
height = height / 2.0;
distance += height * 2;
}
System.out.println(distance);
}
}
18.【被9整除】
键盘录入一个数,请判断它数能被几个9整除 。如81就可以被2个9整除
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int num = n;
int res = 0;
while(num != 1){
num /= 9;
res++;
}
if(Math.pow(9,res) == n)
System.out.println("被" + res + "个9整除");
else
System.out.println("不能被9整除");
}
}
19.【判断奇偶数】
键盘录入一个in数字,判断输出它是奇数还是偶数。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(num % 2 == 0){
System.out.println("偶数");
}else System.out.println("奇数");
}
}
20.【分解质因数】
将一个大于2的正整数分解质因数。例如:输入3的话,输出 3=3; 输入6,输出6 = 2 *3等
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//将一个大于2的正整数分解质因数。例如:输入3的话,输出 3=3; 输入6,输出6 = 2 *3等
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int k = 2;
System.out.printf(num + " = ");
while(num != 1){
if(num % k ==0){
num /= k;
System.out.print(k + " * ");
}
else k++;
}
System.out.printf("\b\b");
}
}
21.【排序】
键盘输入三个整数x、y、z,请把这三个数由小到大输出。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
if(num1 > num2){
int tmp = num1;
num1 = num2;
num2 = tmp;
}
if(num2 > num3){
int tmp = num2;
num2 = num3;
num3 = tmp;
}
if(num1 > num2){
int tmp = num1;
num1 = num2;
num2 = tmp;
}
System.out.println("从小到大排序:" + num1 + " " + num2 + " " + num3);
}
}
22.【交换值】
任意给两个整数(int)值,请交互它们的值。
public class Main {
public static void main(String[] args) {
//交换两个数
int num1 = 3, num2 = 9;
System.out.println("交换前num1 = " + num1 + ",num2 = " + num2);
swap1(num1,num2);
swap2(num1,num2);
swap3(num1,num2);
swap4(num1,num2);
}
public static void swap1(int n1,int n2){//使用中间变量 常用
int tmp = n1;
n1 = n2;
n2 = tmp;
System.out.println("交换前num1 = " + n1 + ",num2 = " + n2);
}
public static void swap2(int n1,int n2){//异或
n1 = n1 ^ n2;
n2 = n1 ^ n2;
n1 = n1 ^ n2;
System.out.println("交换前num1 = " + n1 + ",num2 = " + n2);
}
public static void swap3(int n1,int n2){//加法
n1 = n1 + n2;
n2 = n1 - n2;
n1 = n1 - n2;
System.out.println("交换前num1 = " + n1 + ",num2 = " + n2);
}
public static void swap4(int n1,int n2){//简写加法
n1 = (n1 + n2) - (n2 = n1);
System.out.println("交换前num1 = " + n1 + ",num2 = " + n2);
}
}
23.【求自守数】
自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出10000(一万)以内的自守数的个数,并分别输出
public static void main(String[] args) {
//10000以内自守数
int res = 0;//自守数的个数
for (int i = 1; i < 10000; i++) {
int tmp = i;
int weishu = 0;//i是几位数
while(tmp != 0){//判断是几位数
tmp /= 10;
weishu++;
}
if(i == (i * i) % (Math.pow(10,weishu))){//判断是否是自守数
System.out.println(i);
res++;
}
}
System.out.println("一万以内有" + res + "个自守数");
}
24.【循环练习】
给20块钱买饮料,每瓶饮料3块钱,喝完之后退瓶子可以换回1块钱。问最多可以喝到多少瓶饮料?
public class Main {
public static void main(String[] args) {
int money = 20;
int num = 0;//每次买饮料的瓶数
int remain = 0;//每次剩下的钱
int res = 0;//最后买了几瓶
while(money >= 3){
num = money / 3;
remain = money % 3;
money = num + remain;
res += num;
}
System.out.println(res);
}
}
25.【循环练习】
井里有一只蜗牛,他白天往上爬5米,晚上掉3.5米,井深56.7米,计算蜗牛需要多少天才能从井底到爬出来
public static void main(String[] args) {
int res = 0;
double climbing = 0;//往上爬了多少米
while(climbing < 56.7){
climbing += 5;
climbing -= 3.5;
res++;
}
System.out.println(res);
}
26.【键盘录入】
键盘输入任意一个正整数,求各位数字之和
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long num = sc.nextLong();
int res = 0;
while(num != 0){
res += num % 10;
num /= 10;
}
System.out.println(res);
}
27.【求和】
打印出1-100之间所有不是7的倍数和不包含7的数字,并求和
public static void main(String[] args) {
//不是7的倍数和不包含7的数字
int res = 0;
for (int i = 1; i <= 100; i++) {
if(i % 7 != 0 && i % 10 !=7 && i / 10 !=7){
res += i;
System.out.println(i);
}
}
System.out.println(res);
}
28.【分数累加】
编写一个函数,输入n为偶数时,求1/2 + 1/4 +1/6 + … + 1/n的结果;当输入n为奇数时,求1/1 + 1/3 + 1/5 +… + 1/n 的结果
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int inputNum = sc.nextInt();
double res = 0;
if(inputNum % 2 == 0){//是偶数
for (int i = 2; i <= inputNum; i+=2) {
res += 1.0 / i;
}
}else{//是奇数
for (int i = 1; i <= inputNum; i+=2) {
res += 1.0 / i;
}
}
System.out.println(res);
}
}
29.【switch练习】
输入年份和月份,输出这个月应该有多少天(使用switch结构,需要考虑闰年和平年,注意case穿越)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int y = sc.nextInt();
int m = sc.nextInt();
int res = 0;
switch (m){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
res = 31;break;
case 4: case 6: case 9: case 11: res = 30;break;
case 2:{
if(isLeapYear(m)) res =29;
else res = 28;
}break;
default:break;
}
System.out.println(res);
}
public static boolean isLeapYear(int year){
if(year % 400 == 0 || (year % 4 ==0 && year % 100 == 0)){
return true;
}
return false;
}
}
30.【三目运算符】
某小伙想定一份外卖,商家的优惠方式如下:鱼香肉丝单点 24 元,油炸花生米单点 8 元,米饭单点 3 元。订单满 30 元 8 折优惠。鱼香肉丝优惠价 16 元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱
public static void main(String[] args) {
int youhui = 16 + 8 + 3;
double zhekou = (24 + 8 + 3) * 0.8;
double minPrice = youhui > zhekou ? zhekou : youhui;
System.out.println("最少花" + minPrice);
}
扩展5题
1.【递归经典问题-不死神兔】
有一对兔子,从出生后第3个月起 每个月都生一对兔子,小兔子长到第三个月后每个月又生一对 兔子,假如兔子都不死,问每个月的兔子对数为多少? (其实 就是斐波那契数列)
import java.util.Scanner;
public class Main {
// 1-1-2-3-5-8-13-21
public static int tuzi(int m){
if(m == 1 || m == 2) return 1;
return tuzi(m - 1) + tuzi(m - 2);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for (int i = 1; i <= num; i++) {
System.out.print(tuzi(i) + " ");
}
}
}
2.【递归】
有5个人坐在一起,问第五个人多少岁?他说比第4个 人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个 人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。 最后问第一个人,他说是10岁。请问第五个人多大?
public class Main {
public static int getAge(int index){
if(index == 1) return 10;
return getAge(index - 1) + 2;
}
public static void main(String[] args) {
System.out.println(getAge(5));
}
}
3.【排序】
随机给十个数字,对它们进行排序。(可以给一个有 10个整数元素的数组,然后对数组排序)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] nums = { 12,34,545,35,24,56,6,76,4,555};
for (int i = 0; i < nums.length - 1; i++) {//冒泡几趟
for(int j = 0; j < nums.length - 1 - i; j++){
if(nums[j] > nums[j+1]){
int tmp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = tmp;
}
}
}
for (int v : nums) {
System.out.printf(v + " ");
}
}
}
4.【数组元素的插入】
有一个已经排好序的int数组{1, 2, 3, 4, 5, 6, 7, 8}。现输入一个数(要求该数在1-8之间),按 原来的规律将它插入数组中。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
//有一个已经排好序的int数组{1, 2, 3, 4, 5, 6, 7, 8}。现输入一个数(要求该数在1-8之间),按 原来的规律将它插入数组中。
public static void main(String[] args) {
int[] n = {1, 2, 3, 4, 5, 6, 7, 8};
System.out.println("输入1-8之间的数字:");
Scanner sc = new Scanner(System.in);
int index = sc.nextInt();
//构造新数组
int[] newn = new int[n.length+1];
for (int i = 0; i < index; i++) {
newn[i] = n[i];
}
newn[index] = index;
for (int i = index + 1; i < newn.length; i++) {
newn[i] = n[i - 1];
}
System.out.println(Arrays.toString(newn));
}
}
5.【数组元素的交换】
给出一个int数组,把它最大的元素与第一 个元素交换,最小的元素与最后一个元素交换,输出交换后的 数组。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = { 12,34,545,35,24,56,6,76,4,555};
int len = nums.length;
int indexOfMax = 0;//最大元素的下标
for (int i = 1; i < len; i++) {
if(nums[i] > nums[indexOfMax]){
indexOfMax = i;
}
}
//交换最大和第一个元素
int tmp = nums[0];nums[0] = nums[indexOfMax]; nums[indexOfMax] = tmp;
int indexOfMin = len - 1;//最小元素的下标
for (int i = 1; i < len - 1; i++) {
if(nums[i] < nums[indexOfMin]){
indexOfMin = i;
}
}
//交换最小和最后一个元素
tmp = nums[len - 1]; nums[len - 1] = nums[indexOfMin]; nums[indexOfMin] = tmp;
System.out.println(Arrays.toString(nums));
}
}