双重for循环和Arrays.toString()的运算
package day04;
import java.util.Arrays;
import java.util.Scanner;
/**
* 集合的换位运算:
* 提示用户进行5次数字输入,将输入的所有数字先按照输入的顺序依次存放到一个集合当中,
* 再通过换位运算对所有数字在集合中进行比较换位,最终实现从小到大排列或从大到小排列
* @author 74599
*
*/
public class ClassDemo01 {
public static void main(String[] ages) {
//创建键盘监听
Scanner key = new Scanner(System.in);
//创建一个数组,定义数组的长度为5
double[] num = new double[5];
//让用户进行循环输入5次(num.length)
for(int i = 0;i<num.length;i++) {
//将每次输入的值存放在数组的第i个元素中
System.out.println("第" + (i+1) + "次输入:");
num[i] = key.nextDouble();
//输出用户输入的结果,需要使用Arrays.toString()才能输出数组内容,直接使用num进行输出打印的则是地址值
System.out.println("第" + (i+1) + "次输入结果为:" + Arrays.toString(num));
}
//关闭键盘监听
key.close();
//打印输入结果,需要使用Arrays.toString()才能输出数组内容,直接使用num进行输出打印的则是地址值
System.out.println("输入值:"+Arrays.toString(num));
//从小到大排序
System.out.println("从小到大:");
//双重for遍历数组
for(int i = 0;i<num.length;i++) {
for(int j = 0;j <num.length-1;j++) {
//对每一次的循环进行判断,判断当前当前数组角标的值是否大于当前角标+1的值
if(num[j]>num[j+1]) {
//创建一个double类型的变量x来对当前角标+1的数字进行存储
double x = num[j+1];
//如果当前角标的值大于了当前角标+1的值,那么就让当前角标+1的值替换到当前角标的值
num[j+1] = num[j];
//当前角标的值转换到x位置,也就是当前角标+1的位置,进行位置互换
num[j] = x;
}
}
//输出每次变换的数组动态
System.out.println("从小到大!第"+(i+1)+"次结果:"+Arrays.toString(num));
}
//从大到小排序
System.out.println("从大到小:");
//双重for遍历数组
for(int i = 0;i<num.length;i++) {
for(int j = 0;j <num.length-1;j++) {
//对每一次的循环进行判断,判断当前当前数组角标的值是否小于当前角标+1的值
if(num[j]<num[j+1]) {
//创建一个double类型的变量x来对当前角标+1的数字进行存储
double x = num[j+1];
//如果当前角标的值小于了当前角标+1的值,那么就让当前角标+1的值替换到当前角标的值
num[j+1] = num[j];
//当前角标的值转换到x位置,也就是当前角标+1的位置,进行位置互换
num[j] = x;
}
}
//输出每次变换的数组动态
System.out.println("从大到小!第"+(i+1)+"次结果:"+Arrays.toString(num));
}
//计算数组的平均值
System.out.print("平均值:");
//创建一个sum类型的变量,并初始化值为0
double sum = 0;
//循环遍历数组
for(int i = 0;i<num.length;i++) {
//每遍历一个角标就将角标的值加上sum原本的值进行覆盖增加
sum += num[i];
}
//用sum的值除以数组的长度得到平均值
System.out.print(sum/num.length + "\t");
//输出for循环数组遍历相加后的sum和值
System.out.println("总和:"+sum);
}
}
浙公网安备 33010602011771号