java编程:从键盘输入字符串,并按字典顺序倒序打印

编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。

import java.util.ArrayList;
import java.util.Scanner;
public class JudgeString {
 public static void main(String[] args) {
  // 接受键盘输入
  Scanner in = new Scanner(System.in);
  // 保存输入数据的List
  ArrayList<String> list = new ArrayList<String>();
  System.out.println("请输入字符串,输入“end”为结束:");
  // 获取每次输入的字符串
  String temp = in.nextLine();
  // 获取输入的所有字符串
  while (!temp.equals("end")) {
   list.add(temp);
   temp = in.nextLine();
  }
  // 调用排序函数
  sort(list);
  //输入结果
  System.out.println("排序后的结果为:");
  for(int i = 0;i<list.size();i++){
   System.out.println(list.get(i));
  }
 }
 // 排序函数(冒泡)
 public static void sort(ArrayList<String> list) {
  String temp = "";
  for (int i = 0; i < list.size(); i++) {
   for (int j = 0; j < list.size() - 1; j++) {
    if (list.get(i).compareToIgnoreCase(list.get(j)) > 0) {
     temp = list.get(i);
     list.set(i, list.get(j));
     list.set(j, temp);
    }
   }
  }
 }
}

已经调试过了,肯定能运行,有不懂得可以问

追问

哥们,那个真的很抱歉,没看到你的回答,其实你这个才是正确的~给不了分了,留个地址,我给你寄点吃的哈。弱弱再问一句:冒泡排序不是依次比较相邻元素么,你这个看上去像选择排序,不懂勿喷~~~

追答

这个无所谓啦。重在学习分享。冒泡是依次比较相邻元素,把大元素向后排,就像水里面冒出来的气泡一样,大元素放到后面。每一次大循环完成,最后一位数总是最大的。选择排序是由一个中间变量保存一组数字中最大或者最小值,然后依次把它从第一位开始排列。直至全部排序完成。不懂得可以去百度一下选择和冒泡排序。这都是基本的排序方法。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-25
import java.util.Scanner;

public class Test8 {

public static void main(String[] args) {
Scanner c = new Scanner(System.in);
StringBuffer sbf = new StringBuffer();
while(true){
System.out.println("请输入一组字符串:");
String s = c.nextLine();
if(s.equals("end")){
break;
}else{
sbf.append(s);
}
}
String sc = sbf.toString();
char[]cs = sc.toCharArray();
for(int i = cs.length-1;i>=0;i--){
System.out.print(cs[i]);
}
}
}

 不知道你所谓的字典顺序是什么意思? 我这个是把所有字符串组一块,倒序打印

追问

就是按照字母的顺序排序,先比较第一个字符,第一字符相同,继续比较第二个字符。比如输入abc bcd efg 输出应该是efg bcd abc 。就是想问这个,java中有什么方法可以实现这个排序,求解!

追答

拿走试试

import java.util.Scanner;

public class Test8 {

public static void main(String[] args) {
Scanner c = new Scanner(System.in);
StringBuffer sbf = new StringBuffer();
while(true){
System.out.println("请输入一组字符串:");
String s = c.nextLine();
if(s.equals("end")){
break;
}else{
sbf.append(s+"-");
}
}
String sc = sbf.toString();
String[]cs = sc.split("-");
for(int i = cs.length-1;i>=0;i--){
char[] aa = cs[i].toCharArray();
 java.util.Arrays.sort(aa);
 //遍历aa
 for(char x:aa){
 System.out.print(x);
 }
 System.out.println();
}
}
}

 注意这两句

char[] aa = cs[i].toCharArray();
 java.util.Arrays.sort(aa);

把字符串分割成char类型数组 然后用Arrays.sort(aa)排序

ps: 黄岛的理工大? 

追问

嗯,对啊,理工大的学生,谢谢你了。这个Arrays.sort(aa)是否就是按照ASCII码表排序的意思啊?

追答

应该是按这个码排的. A65  a是97  我记得曾经有个智力题是让把A a排序 A在前 a在后,就是根据这个码.

另外 俺不是嫩校友,不过俺是青岛的,在黄岛待过,在嫩学校玩过,俺哥哥跟俺嫂子都是理工大的.

String str="a";
char c=str.charAt(0); 
System.out.println((int)c);

本回答被提问者采纳
相似回答