黑马程序员技术交流社区

标题: 求各位大神帮我看看 [打印本页]

作者: 漫步人    时间: 2013-10-29 00:00
标题: 求各位大神帮我看看
本帖最后由 漫步人 于 2013-10-29 11:16 编辑

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

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Scanner;

public class StringSort {

public static void main(String[] args) {

List<String> list = new ArrayList<String>();

Scanner scanner = new Scanner(System.in);

String temp = scanner.nextLine();

while (!temp.equals("end")) {

list.add(temp);

temp = scanner.nextLine(); //不加这句就报异常,加了就不知道是什么意思了

}

Collections.sort(list); // 按字典序正序排序

Collections.reverse(list); // 再将列表翻转 ,可是没有翻转啊!

for (String str : list) {

System.out.println(str);

}

}

}



作者: cuilitang    时间: 2013-10-29 10:54
  1. package itcast.cn;

  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.List;
  5. import java.util.Scanner;

  6. import java.util.ArrayList;

  7. import java.util.Collections;

  8. import java.util.List;

  9. import java.util.Scanner;

  10. public class StringSort {

  11.         public static void main(String[] args) {
  12.        
  13.                 List<String> list = new ArrayList<String>();
  14.                
  15.                 Scanner scanner = new Scanner(System.in);
  16.                
  17.                 String temp = null;
  18.                 System.out.println("请输入要反向排序的值,值之间请用回车符分割:");        //搞个提示
  19.                
  20.                 while (!"end".equals(temp)) {  //要用确认的值去equals不确认的值,不然null去调用equals就出现“java.lang.NullPointerException”,空指针异常了
  21.                        
  22.                         temp = scanner.nextLine();   //需要将temp加入到循环中来,不然的话,只有第一次的值能存储到temp中,因为第二次没接受到值,用null去调equals肯定要报空指针异常
  23.                         list.add(temp);
  24.                        
  25.                        
  26.                
  27.                 }
  28.                
  29.                 Collections.sort(list); // 按字典序正序排序

  30.                 Collections.reverse(list);    //是你录入的问题,nextline是接收一行,你一直录入不敲回车,实际上程序是接收了一个元素,没什么好反转的,你要敲入一个元素,敲一下回车,这样就能反转了
  31.                
  32.                 for (String str : list) {
  33.                
  34.                         System.out.println(str);
  35.        
  36.                 }
  37.        
  38.         }

  39. }
复制代码
细节决定成败,兄弟,你细节把关不严啊....
作者: cuilitang    时间: 2013-10-29 10:58
  1. package itcast.cn;

  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.List;
  5. import java.util.Scanner;

  6. import java.util.ArrayList;

  7. import java.util.Collections;

  8. import java.util.List;

  9. import java.util.Scanner;

  10. public class StringSort {

  11.         public static void main(String[] args) {
  12.        
  13.                 List<String> list = new ArrayList<String>();
  14.                
  15.                 Scanner scanner = new Scanner(System.in);
  16.                
  17.                 String temp = null;
  18.                 System.out.println("请输入要反向排序的值,值之间请用回车符分割:");        //搞个提示
  19.                
  20.                 while (!"end".equals(temp)) {  //要用确认的值去equals不确认的值,不然null去调用equals就出现“java.lang.NullPointerException”,空指针异常了
  21.                        
  22.                         temp = scanner.nextLine();   //需要将temp加入到循环中来,不然的话,只有第一次的值能存储到temp中,因为第二次没接受到值,用null去调equals肯定要报空指针异常
  23.                         list.add(temp);
  24.                 }
  25.                
  26.                 Collections.sort(list); // 按字典序正序排序

  27.                 Collections.reverse(list);    //是你录入的问题,nextline是接收一行,你一直录入不敲回车,实际上程序是接收了一个元素,没什么好反转的,你要敲入一个元素,敲一下回车,这样就能反转了
  28.                
  29.                 for (String str : list) {
  30.                
  31.                         System.out.println(str);
  32.        
  33.                 }
  34.        
  35.         }

  36. }

  37. /**
  38. * 1.你用null去equals,肯定要报空指针,一定要闹清楚哪些东西该放进循环体里,可以自己先分析一下
  39. * 2.nextline是接收一行,貌似你没闹明白这一点,结果怎么敲都是一个元素,情何以堪
  40. */
复制代码

作者: cuilitang    时间: 2013-10-29 23:15
为什么没有人给我加技术分?{:soso_e118:}
作者: 落木萧萧    时间: 2013-10-30 10:56
cuilitang 发表于 2013-10-29 23:15
为什么没有人给我加技术分?

云7就一个版主,加分慢很正常的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2