`
lzh166
  • 浏览: 293723 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

输入一组数字,以逗号分隔,然后可选择升或者降序对其排序

阅读更多

这是一道笔试题,在网上也看到一些人解答的,总感觉不好,今天我就花了一点时间整理了一下,在这里分享一下,如有什么地方不正确的地方还需多多指出!

题目要求:输入一组数字,以逗号分隔,然后可选择升或者降序对其排序,这里我将根据用户输入按键A、D进行升、降序操作

下面贴出代码:

package com.interview.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
/**
 * 现在输入一组数字,以逗号分开;然后按可选择的A升或者D降序进行排序
 * 注:这里的排序是采用TreeSet,所以没有重复的,如果输入重复的数字只算一个数字
 * @author Administrator
 *
 */
public class ByCommaSort {
	public static void main(String[] args) throws Exception{
		System.out.println("请您输入一组数字,以‘,’分隔:");
		String str = new BufferedReader(new InputStreamReader(System.in)).readLine();
		System.out.println("选择排序方式A:升序,D:降序");
		int c = new BufferedReader(new InputStreamReader(System.in)).read();
		
		sort(str,c);
	}
	/**
	 * 排序
	 * @param str 排序字符串
	 * @param c A升序 D降序
	 */
	private static void sort(String str,int c) {
		str = str.replaceAll("\\D+", ",");//如:提取df67中67 
		TreeSet<Integer> set = null;
		if(c==65){
			set =  new TreeSet<Integer>();
		}else if(c==68){
			set = new TreeSet<Integer>(new MyComparator());
		}
		
//		当然也可以使用StringTokenizer进行拆分字符串
//		StringTokenizer commaToken = new StringTokenizer(str,true,",");
		
		String[] array = str.split(",");
		for(String s :array){
			if(s.matches("\\d+")){
				set.add(Integer.parseInt(s));
			}
		}
		print(set);
	}

	/**
	 * 打印结果
	 * @param set排序好的数据
	 */
	private static void print(TreeSet<Integer> set) {
		Iterator itor = set.iterator();
		System.out.print("排序结果:");
		while(itor.hasNext()){
			System.out.print(itor.next()+",");
		}
	}
}
/**
 * 重写comparator中compare方法以实现让TreeSet降序排序
 * @author Administrator
 *
 */
class MyComparator implements Comparator{

	public int compare(Object o1, Object o2) {
		if(o1.equals(o2))
		return 0;
		return ((Comparable)o1).compareTo(o2)*-1;
	}
	
}

 

分享到:
评论

相关推荐

    最新Java面试宝典pdf版

    然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...

    Java面试宝典2010版

    然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 五. 数据库部分 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 2、列出各个部门中工资高于本部门的...

    Java面试笔试资料大全

    然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...

    JAVA面试宝典2010

    然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...

    Java面试宝典-经典

    然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...

    Java面试宝典2012新版

    然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...

    java面试题大全(2012版)

    然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...

    Java面试宝典2012版

    然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...

    java面试宝典2012

    然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 99 五. 数据库部分 99 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 99 2、列出各个部门中工资高于本...

    2009达内SQL学习笔记

    多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以 “;”号结束 二、写子句顺序 Select column,group_function From ...

    SQL语法大全

    COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名) 取得一个表格栏最大的值 MIN(字段名) 取得一个表格栏最小的值 SUM(字段名) 把数据栏的值相加 引用以上函数的方法: sql="select sum...

    JavaScript笔记

    如果省略该参数,则使用逗号作为分隔符 |--2.toString()方法--可把数组转换为字符串,并返回结果 |--3.concat()方法--用于连接两个或多个数组,该方法不会改变现有的数组 |--4.slice()方法--截取元素。根据给定的...

    Java 面试宝典

    一. Java 基础部分..................................................................................................................... 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么...

Global site tag (gtag.js) - Google Analytics