标题: java笔试题 [打印本页] 作者: chenguoyu520 时间: 2015-11-9 22:43 标题: java笔试题 编写一个类,其中包含两个排序的方法sort(),参数不同,当键盘录入的是一串整数,就按照从小到大的顺序输出,如果键盘录入的是一个字符串,就将字符串反序输出 作者: 大自然的搬运工 时间: 2015-11-9 23:43
public class Test{
public static void main (String[] args){
Scanner scan = new Scanner(System.in);
String line = scan.next();
line = MySort.sorts(line);
System.out.println(line);
int num = scan.nextInt();
num = MySort.sorts(num);
System.out.println(num);
}
}
class MySort{
public static String sorts(String s){
byte[] bytes = s.getBytes();
Arrays.sort(bytes);
for(int i = 0,j=bytes.length-1;i<j;i++,j--){
byte b = bytes[i];
bytes[i] = bytes[j];
bytes[j] = b ;
}
s = new String(bytes);
return s;
}
public static int sorts(int x){
String s = ""+x ;
byte[] bytes = s.getBytes();
Arrays.sort(bytes);
s = new String(bytes);
return new Integer(s);
}
}作者: 吃饭工作睡觉 时间: 2015-11-10 09:26
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请问您输入的字符串还是数组:");
System.out.println("\t1.字符串.");
System.out.println("\t2.数组(请用空格分割数字).");
int num = scanner.nextInt();
//不能再接受数字后直接接受字符串,Enter键的输入数字时敲入。
//又会被nextLine()读取。应该使用两个nextLine()
scanner.nextLine();
System.out.println("请输入数据:");
String line = scanner.nextLine();
System.out.println(line);
switch(num){
case 1:
sort(line);
break;
case 2:
String[] strArray = line.split(" ");
int[] intArray = new int[strArray.length];
for (int i = 0; i < strArray.length; i++) {
intArray[i] = Integer.parseInt(strArray[i]);
}
sort(intArray);
break;
default:
System.out.println("您输入的格式不对");
}
}
public static void sort(int[] arr){
//调用Arrays的sort方法为数组排序
Arrays.sort(arr);
//调用Arrays的toString()方法输出数组
System.out.println(Arrays.toString(arr));
}
public static void sort(String str){
//讲字符串变为字符数组
String[] arr = str.split("");
//调用Arrays的sort方法为数组排序
Arrays.sort(arr);
//调用Arrays的toString()方法输出数组
System.out.println(Arrays.toString(arr));
}
}
复制代码
作者: 伍陶陶 时间: 2015-11-10 12:48
不错不错,这个题目有意义。作者: 萧未然 时间: 2015-11-10 17:07
说一下哈,字符串的反向输出的简便方法
public static void sort(String str){
if(str==null){//非空判断,否者反转时会出现lNullPointerException
System.out.println("什么都输入");
return;
}
StringBuilder sb=new StringBuilder(str);
str=sb.reverse().toString();//反转
System.out.println(str);
}作者: 杨洛神 时间: 2015-11-10 17:26
看看不错...作者: tangqun 时间: 2015-11-10 20:18
输入整型数组则排序
输入字符串则反序,反序是不是说输入"abcdef",变成输出"fedcba"?
class A
{
public static int[] Sort(int[] a)
{
for (int i = 0; i < a.Length; i++)
{
for (int j = i + 1; j < a.Length; j++)
{
if (a[i] > a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
return a;
}
public static String Sort(String a)
{
char[] c = a.ToCharArray();
for (int i = 0; i < c.Length / 2; i++)
{
char temp = c[i];
c[i] = c[c.Length - 1 - i];
c[c.Length - 1 - i] = temp;
}
StringBuilder sb = new StringBuilder("");
sb.Append(c);
return sb.ToString();
}
};作者: gpalw 时间: 2015-11-10 21:07
又学到了,原来是这样子做。。作者: +icer+ 时间: 2015-11-10 21:54
学到老活到老.作者: 744919632 时间: 2015-11-11 09:36
长知识了、作者: jiao731097245 时间: 2015-11-11 16:46
[code]import java.util.Scanner;
class Demo
{
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
String str=s.next();
System.out.println(sort(str));
}
public static String sort(String str){
//将字符串转换为字符数组
char[] c=str.toCharArray();
//定义标记,判断输入的是否为字符串
boolean flag=false;
//遍历数组,如果有一个不为整数时,则为字符串
for(int i=0;i<c.length;i++){
if(c[i]<'0'||c[i]>'9'){
flag=true;
break;
}
}
//如果为字符串,通过StringBuilder的reverse将字符串进行反转
if(flag)
return new StringBuilder(str).reverse().toString();
public class Demo {
public static void main(String[] args) {
// int [] objs={3,6,1,10,8};
// objs=sort(objs);
String[] objs={"b","a","c","h","d"};
objs=sort(objs);
for (int i = 0; i < objs.length; i++) {
System.out.println(objs[i]+" ");
}
}
public static int[] sort(int[] nums){
Arrays.sort(nums);
return nums;
}
public static String[] sort(String[] strs){
for (int i = 0; i < strs.length; i++) {
for (int j = 0; j < strs.length-i-1; j++) {
if(strs[j].compareTo(strs[j+1])<1){
String temp=strs[j];
strs[j]=strs[j+1];
strs[j+1]=temp;
}
}
}
return strs;
}
}
追问:
可不可以帮我注明一下
追答:
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
//数字已经测试过,没有问题
// int [] objs={3,6,1,10,8};
// objs=sort(objs);
//随便建一个字符的数组
String[] objs={"b","a","c","h","d"};
objs=sort(objs);
//打印
for (int i = 0; i < objs.length; i++) {
System.out.println(objs[i]+" ");
}
}
//用Arrays.sort()方法排序,默认从小到大
public static int[] sort(int[] nums){
Arrays.sort(nums);
return nums;
}
//字符串排序,用冒泡排序,通过compareTo(str)方法进行比较,该方法是根据字典表的顺序进行比较,如果参数大于本值,则返回-1,如果相等返回0,大于返回1
public static String[] sort(String[] strs){
for (int i = 0; i < strs.length; i++) {
for (int j = 0; j < strs.length-i-1; j++) {
if(strs[j].compareTo(strs[j+1])<1){
String temp=strs[j];
strs[j]=strs[j+1];
strs[j+1]=temp;
}
}
}
return strs;
}