A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李罡 中级黑马   /  2013-3-15 10:30  /  1547 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李罡 于 2013-3-15 11:30 编辑

  1. 要求对字符串中的数值进行排序。生成一个数值从小到大新字符串。
  2. 例如:输入"12 0 99 -7 30 4 100 13"
  3.   返回"-7 0 4 12 13 30 99 100"

  4. 代码如下:
  5. import java.util.*;

  6. class TestTotal
  7. {
  8. public static void main(String[] args)
  9. {
  10. String str;
  11. Scanner sc=new Scanner(System.in);
  12. sop("请输入一个字符串");
  13. str=sc.next();
  14. sop("得到的字符串为:"+method_03(str," "));
  15. }
  16. public static void sop(Object obj)
  17. {
  18. System.out.println(obj);
  19. }

  20. public static String method_03(String str,String reg)///第三题
  21. {
  22. //用空格分割
  23. String[] arr=str.split(reg);
  24. //将字符串数组转成整形数组
  25. int[] arr1=stringToIntArray(arr);
  26. //排序
  27. Arrays.sort(arr1);
  28. //将整形数组转成字符串并用空格相连,再返回
  29. return toString(arr1,reg);
  30. }

  31. public static int[] stringToIntArray(String[] arr)//将字符串数组转成整形数组
  32. {
  33. int[] temp=new int[arr.length];
  34. for (int x=0;x<arr.length ;x++ )
  35. {
  36. temp[x]=Integer.parseInt(arr[x]);/////字符串转成整数
  37. }
  38. return temp;
  39. }

  40. public static String toString(int[] arr1,String reg)//将整形数组转成字符串并用空格相连
  41. {
  42. StringBuffer sb=new StringBuffer();
  43. for (int x=0;x<arr1.length ;x++ )
  44. {
  45. if(x==arr1.length-1)
  46. sb.append(arr1[x]);
  47. else
  48. sb.append(arr1[x]+reg);
  49. }
  50. return sb.toString();
  51. }
  52. }
复制代码
请输入一个字符串
12 0 99 -7 30 4 100 13
得到的字符串为:12

呃,到底问题出在哪呢,找了好几遍都没发现。。。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 刘海浩 于 2013-3-15 11:07 编辑
  1. package com.Javatest;


  2. import java.util.*;

  3. public class TestTotal
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 String str;
  8.                 Scanner sc=new Scanner(System.in);
  9.                 sop("请输入一个字符串");
  10.                 str=sc.nextLine();//  取得输入的一行字符串,         
  11. sop("得到的字符串为:"+method_03(str," "));
  12.         }
  13.         public static void sop(Object obj)
  14.         {
  15.                 System.out.println(obj);
  16.         }

  17. public static String method_03(String str,String reg)///第三题
  18. {
  19. //用空格分割
  20.         String[] arr=str.split(reg);
  21.         //将字符串数组转成整形数组
  22.         int[] arr1=stringToIntArray(arr);
  23.         //排序
  24.         Arrays.sort(arr1);
  25.         //将整形数组转成字符串并用空格相连,再返回
  26.         return toString(arr1,reg);
  27. }

  28. public static int[] stringToIntArray(String[] arr)//将字符串数组转成整形数组
  29. {
  30.         int[] temp=new int[arr.length];
  31.         for (int x=0;x<arr.length ;x++ )
  32.         {
  33.                 temp[x]=Integer.parseInt(arr[x]);/////字符串转成整数
  34.         }
  35.         return temp;
  36. }

  37. public static String toString(int[] arr1,String reg)//将整形数组转成字符串并用空格相连
  38. {
  39.         StringBuffer sb=new StringBuffer();
  40.         for (int x=0;x<arr1.length ;x++ )
  41.         {
  42.                 if(x==arr1.length-1)
  43.                 sb.append(arr1[x]);
  44.                 else
  45.                 sb.append(arr1[x]+reg);
  46.         }
  47.         return sb.toString();
  48.         }
  49. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
09.class TestTotal

10.{

11.public static void main(String[] args)

12.{

13.String str;

14.Scanner sc=new Scanner(System.in);

15.sop("请输入一个字符串");

16.str=sc.next();//这里换成sc.nextLine()就ok了,

17.sop("得到的字符串为:"+method_03(str," "));

18.}

19.public static void sop(Object obj)

20.{

21.System.out.println(obj);

22.}

点评

下次贴代码最好用那个代码工具  发表于 2013-3-15 13:22

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
。。。我去,竟然是nextLine()。。。。。
回复 使用道具 举报
刘海浩 发表于 2013-3-15 11:04

花了我好长时间啊!!
回复 使用道具 举报
本帖最后由 张栓紧 于 2013-3-15 11:21 编辑

你用Scanne类的r的.next()方法是不行的
我给你改进了下,能安妮要求的输出:
  1. /*要求对字符串中的数值进行排序。生成一个数值从小到大新字符串。
  2. 例如:输入"12 0 99 -7 30 4 100 13"
  3.   返回"-7 0 4 12 13 30 99 100"

  4. 代码如下:*/
  5. import java.io.BufferedReader;
  6. import java.io.InputStreamReader;
  7. import java.util.*;

  8. class M1
  9. {
  10. public static void main(String[] args) throws Exception
  11. {
  12.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//我把Scanner 类换成字符读取了。。。。。。。。
  13. String str;

  14. sop("请输入一个字符串");
  15. str=br.readLine();

  16. sop("得到的字符串为:"+method_03(str," "));
  17. }
  18. public static void sop(Object obj)
  19. {
  20. System.out.println(obj);
  21. }

  22. public static String method_03(String str,String reg)///第三题
  23. {
  24. //用空格分割
  25. String[] arr=str.split(reg);
  26. //将字符串数组转成整形数组
  27. int[] arr1=stringToIntArray(arr);
  28. //排序
  29. Arrays.sort(arr1);
  30. //将整形数组转成字符串并用空格相连,再返回
  31. return toString(arr1,reg);
  32. }

  33. public static int[] stringToIntArray(String[] arr)//将字符串数组转成整形数组
  34. {
  35. int[] temp=new int[arr.length];
  36. for (int x=0;x<arr.length ;x++ )
  37. {
  38. temp[x]=Integer.parseInt(arr[x]);/////字符串转成整数
  39. }
  40. return temp;
  41. }

  42. public static String toString(int[] arr1,String reg)//将整形数组转成字符串并用空格相连
  43. {
  44. StringBuffer sb=new StringBuffer();
  45. for (int x=0;x<arr1.length ;x++ )
  46. {
  47. if(x==arr1.length-1)
  48. sb.append(arr1[x]);
  49. else
  50. sb.append(arr1[x]+reg);
  51. }
  52. return sb.toString();
  53. }
  54. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
薛飞 中级黑马 2013-3-15 11:29:05
7#
第16行改为:str=sc.nextLine();就O啦:)
回复 使用道具 举报
曹睿翔 发表于 2013-3-15 11:10
09.class TestTotal

10.{

ok,谢谢斑竹给面子!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马