这是一道笔试题,在网上也看到一些人解答的,总感觉不好,今天我就花了一点时间整理了一下,在这里分享一下,如有什么地方不正确的地方还需多多指出!
题目要求:输入一组数字,以逗号分隔,然后可选择升或者降序对其排序,这里我将根据用户输入按键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程序设计了一个简单的图形用户界面(GUI),用于接收用户输入的一组以逗号分隔的数字,然后根据用户的选择进行升序或降序排序,并将排序后的结果展示在界面上。程序主要使用了AWT库来创建组件和布局,并通过...
我们可以在对话框中的输入框内直接输入自定义的序列,如输入“金工车间, 铸造车间, 维修车间”,并使用英文逗号分隔,或者每输入一个序列后按回车键。如果序列已经存在于工作表中,也可以直接选中该区域,并点击...
6. 公式中引用了一组单元格,如(C3,D7,A2,F1),该公式引用的单元格总数为**4**。每个逗号分隔的单元格代表一个单独的引用。 7. 要在Excel公式中引用某单元格的数据,需键入该单元格的**名称**。这可以是单元格的...
一维数组的创建简单直观,用户只需输入数值并用逗号或空格分隔,用右方括号闭合。例如,`array = [1, 2, 3, 4, 5]` 创建了一个包含1到5的一维数组。此外,MATLAB还支持创建等差或等比数组,如`array = 1:5`生成1到5...
- 不正确的日期常数是用逗号分隔日期的形式,如04-18-8。 - 学生和课程的关系通常是多对多,因为一个学生可以选修多门课程,一门课程也可以被多个学生选修。 - 创建表间关系时,应保持相关表打开。 - 在查找...
写入时,每个学生信息占据一行,使用特定分隔符(如逗号)区分各个字段;读取时,解析每一行并还原为`Student`对象。 系统的主要功能包括增加、删除、修改和查询学生信息。增加信息时,创建新的`Student`对象并添加...
然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...
例如,如果需要找出销售额超过1000的所有记录,只需在销售额列点击筛选图标,并选择“数字筛选”下的“大于”,然后输入1000即可。 **2. 字符替换** 在EXCEL中进行文本处理时,经常需要替换某些字符或字符串。这...
然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...
然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...
然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...
然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...
然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本...
然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 99 五. 数据库部分 99 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 99 2、列出各个部门中工资高于本...
- **ORDER BY子句**:对结果集进行排序,可以指定一个或多个列名,并通过ASC(升序)或DESC(降序)指定排序的方式。 **2. 精细查询技术** - **选择特定列**:在选择列表中,可以通过指定具体的列名来只查询需要的...
具体来说,先对关键字段建立索引,然后使用Seek方法进行快速定位,最后根据索引排序的特点进行遍历查找。 在优化SQL查询语句的过程中,需要分析查询的效率,利用数据库的特定功能,如索引和视图,来提高查询的性能...
多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以 “;”号结束 二、写子句顺序 Select column,group_function From ...
对于格式字符串`"%d,%d,%d%d"`,它期望从输入中读取四个整数,其中前三个整数之间以逗号分隔,最后两个整数连续输入。 ### 17. Excel2003的自动套用格式 - **知识点概述**:Microsoft Excel提供了一种快速美化工作...
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 * 选择所有列:SELECT * FROM testtable * 选择部分列并指定它们的显示次序:SELECT nickname...
2. **列名**:你需要从表中选择的字段名,可以是单个字段,也可以是多个字段,用逗号分隔。 3. **FROM**:关键字,后面跟着你要查询的表名。 4. **WHERE**(可选):用于指定查询条件,只有满足条件的行才会被返回。...