追忆~似水年华 2019-03-29 21:05 采纳率: 0%
浏览 350

Java问题,升序输出的数值如何修改才能带一位小数?

package 实训3;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class 实训3_1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        DecimalFormat df=new DecimalFormat("#.0");

        System.out.println("  ==== 求和及最大最小值 ====");
        System.out.println("请输入逗号分隔的多个数值:");
        List<Integer> list = new ArrayList<Integer>();
        List<String> listErr = new ArrayList<String>();
        Scanner scan = new Scanner(System.in);
        String read = scan.nextLine();
        if (read.indexOf(",") > -1) {
            read = read.replaceAll(",", ",");
        }

        if (read.indexOf(",") > -1) {
            String[] arg = read.split(",");
            for (String key : arg) {
                try {
                    int int_key = Integer.parseInt(key);
                    list.add(int_key);
                } catch (Exception e) {
                    listErr.add(key);
                }
            }
            if (!listErr.isEmpty()) {
                System.out.println("发现非数字字符串:" + listErr.toString() + "已经排除");
            }
            if (!list.isEmpty()) {
                //System.out.println("检测到有效数据:" + list.toString());
                Integer[] strings = new Integer[list.size()];
                list.toArray(strings);
                List<Integer> listresult = Arrays.asList(s(strings));
                System.out.println("按升序排序后的数值:\n" + listresult.toString());
                System.out.println("总个数:" + listresult.size());
                int count = 0;
                for (int i : listresult) {
                    count += i;
                }
                System.out.println("各数和:" + df.format((count)));
                System.out.println("最大值:" + df.format(listresult.get(listresult.size() - 1)));
                System.out.println("最小值:" + df.format(listresult.get(0)));

            }
        } else {
            System.out.println("抱歉,输入有误");
        }

    }

    public static Integer[] s(Integer[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {// 外层循环控制排序趟数
            for (int j = 0; j < arr.length - 1 - i; j++) {// 内层循环控制每一趟排序多少次
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        return arr;
    }

}


  • 写回答

1条回答 默认 最新

  • threenewbee 2019-03-29 22:18
    关注

    你要带小数,得使用float或者double,Integer是整数。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算