A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

将用户在控制台上输入5个数字,按照降序存入到“D:\\number.txt”中
自己写的太复杂了,有没有大神给个简单方法啊。
[Java] 纯文本查看 复制代码
package base3;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

/*
 * 3.将用户在控制台上输入5个数字,按照降序存入到“D:\\number.txt”中
 */
public class Demo {
	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入五个数字");
		int i = 0;
		ArrayList<Integer> list = new ArrayList<>();
		while(i<5){
			int next = sc.nextInt();
			list.add(next);
			i++;
		}
		System.out.println(list);
		//将集合变成数组
		Object[] array = list.toArray();
		//将数组变成升序排列
		Arrays.sort(array);
		//将数组变成字符串
		String string = Arrays.toString(array);
		//将字符串变成字符串缓冲类
		StringBuffer sb = new StringBuffer(string);
		//将字符串翻转
		StringBuffer re = sb.reverse();
		//去除两头的中括号
		String substring = re.substring(1, re.length()-1);
		//打印数组
		System.out.println(substring);
		//将数组写入到文本中
		FileWriter fw= new FileWriter(new File("d:\\number.txt"));
		fw.write(substring);
		fw.close();
	}
}

11 个回复

倒序浏览
新手路过
public class Demo {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入五个数字");
        int[] arr = new int[5];
        for (int i = 0; i < arr.length; i++) {
                        arr[i] = sc.nextInt();
                }
        //将数组变成升序排列
        Arrays.sort(arr);
        //将数组写入到文本中
        FileWriter fw= new FileWriter(new File("d:\\number.txt"));
        for (int i = arr.length - 1; i >= 0 ; i--) {
                fw.write(String.valueOf(arr[i]));
                if(i != 0) {
                        fw.write(",");
                }
                }
        fw.close();
    }
}
感觉没变多简单
不过固定长度为什么还用集合不用数组呢(然后又转换为数组),而且你的这样的结果是数组和逗号之间有空格?
或者你用一下链式看上去少点变量,而且数组有重新toString的方法啊,为什么要那么复杂,你集合都用了Integer做泛型了
StringBuffer sb = new StringBuffer(array.toString()).reverse();
String str = sb.substring(1, sb.length()-1);
回复 使用道具 举报
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

/*
* 3.将用户在控制台上输入5个数字,按照降序存入到“D:\\number.txt”中
*/
public class Demo {
    public static void main(String[] args) throws IOException {
        System.out.println("请输入五个数字");  
        ArrayList<Integer> list = new ArrayList<>();
                for(int i = 0;i < 5;i++){
                         list.add(new Scanner(System.in).nextInt());
                }
        System.out.println(list);
        //将集合变成数组
        Object[] array = list.toArray();
        //将数组变成升序排列
        Arrays.sort(array);
        //将数组变成字符串
        String string = Arrays.toString(array);
        //将字符串变成字符串缓冲类
        StringBuffer sb = new StringBuffer(string);
        //将字符串翻转
        StringBuffer re = sb.reverse();
        //去除两头的中括号
        String substring = re.substring(1, re.length()-1);
        //打印数组
        System.out.println(substring);
        //将数组写入到文本中
        FileWriter fw= new FileWriter(new File("d:\\number.txt"));
        fw.write(substring);
        fw.close();
    }
}
回复 使用道具 举报
不是有一个集合工具类么?另外,你可以用tree集合做,都是排好序的
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
用treeset就可以升序,然后变成字符串反转写出。貌似只能这样了。
回复 使用道具 举报
如果有重复元素TreeSet估计就不行了吧。。。菜鸟的疑问
回复 使用道具 举报
如果考试的时候可以使用TreeSet吗?   默默的问一句
回复 使用道具 举报
谢磊 初级黑马 2016-10-5 17:38:14
8#
Scanner sc = new Scanner(System.in);                 FileWriter fos = new FileWriter("number.txt");                 int[] arr = new int[5];                 for (int i = 0; i < arr.length; i++) {                         arr[i] = sc.nextInt();                 }                 Arrays.sort(arr);                 for (int i = arr.length - 1; i >= 0 ; i--) {                         fos.write(arr[i] + " ");                 }                 fos.close();
回复 使用道具 举报
谢磊 初级黑马 2016-10-5 17:40:42
9#
Scanner sc = new Scanner(System.in);
                FileWriter fos = new FileWriter("number.txt");
                int[] arr = new int[5];
                for (int i = 0; i < arr.length; i++) {
                        arr[i] = sc.nextInt();
                }
                Arrays.sort(arr);
                for (int i = arr.length - 1; i >= 0 ; i--) {
                        fos.write(arr[i] + " ");
                }
                fos.close();
回复 使用道具 举报
讲道理,我这应该是最简单明了的了吧,只有路径那里我没写根目录而已, 给一分呗~
回复 使用道具 举报
[Java] 纯文本查看 复制代码
package com.heima.collection;

import java.io.FileOutputStream;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Test09 {
	public static void main(String[] args) throws Exception {
		List<Integer> list = new LinkedList<Integer>();
		//集合长度小于5就添加
		while (list.size()<5) {
			list.add(new Scanner(System.in).nextInt());
		}
		//排序  逆序
		Collections.sort(list);
		Collections.reverse(list);
		//创建输出流
		FileOutputStream fos = new FileOutputStream("number.txt");
		for (Integer integer : list) {
			fos.write(String.valueOf(integer).getBytes());
			fos.write("\r\n".getBytes());
		}
		fos.close();
	}
}


楼主可以参考下我的思路~
回复 使用道具 举报
用TreeSet集合实现降序也行,我觉得会简单点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马