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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘伯阳 于 2012-5-31 09:58 编辑

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

public class BubbleSort{
public static void main(String[] args) {
  System.out.println("输入n个数字,请用空格分隔");
  Scanner sc = new Scanner(System.in);
  String a[] = sc.nextLine().split(" ");
  
  /*  问题在这里:我用一个String类型数组将几个数字装了进来,但是输出的时候我要将String类型的转换
   *  为整形的才能比较下面a和a[j]的大小,这时我应该如何处理?
   */
  for(int i=0;i<a.length;i++) {
   for(int j=0;j<a.length;j++) {
    if(a>a[j]) {
     temp = a[j];
     a[j] = a;
     a = temp;
    }
   }
  }for(int i=0;i<a.length;i++) {
   System.out.print(a);
   
  }
   
}
}

QQ截图20120530185513.png (27.26 KB, 下载次数: 68)

QQ截图20120530185513.png

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

9 个回复

倒序浏览
可以用Integer类中的parseInt(String s)方法可以

String s="12";
int a=Integer.parseInt(s);

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
可以通过封装类Integer的方法
parseInt(String s)
将字符串参数作为有符号的十进制整数进行解析。
此方法是静态的直接用类名调用即可。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
换个思考方式 你都是装数字 就定一个int数组 或者是long数组 不一定要定义String数组
回复 使用道具 举报
import java.util.Arrays;
import java.util.Comparator;

public class Test5 {

        // 对一个String类型的数组进行排序

        public static void main(String args[]) {
                String[] str = new String[] { "2", "0", "23", "21", "17" };
                Arrays.sort(str, new CustomComparator());

                for (Object s : str) {
                        System.out.println(s);
                }
        }
}

class CustomComparator implements Comparator<String> {
        public int compare(String str1, String str2) {
                int name1 = Integer.parseInt(str1);
                int name2 = Integer.parseInt(str2);
                return name1 - name2;
        }
}
用比较器去解决会比较方便一些!

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
转换类型分为3种
第一种:自动类型转换:比如说在一个较小的数据类型和一个较大的数据类型在做运算是,系统会自动将小的数据类型转换为大的数据类型:
举例:int intnum = 5;   double doubnum = 5.5;   最后运算出来的数据就是double类型的。
第二种:强制转换:也就是将较大的数据转为较小的数据
举例:int num = (int)(1.5+3.7);   输出等于
第三种:包装类过度类型转换:可以运用包装类的各种方法来经行转换,常用的包装类有:Boolean,Character,Integer,Long,Float,Double.

现在楼主这个问题应该就知道怎么解决了吧?第一种和第二种都完成不了的话,那就只有选择第三种。你是要转成int类型的。那你就查看下API

在Integer包装类里面有一个parsInt(String s)这个方法.用这个方法就可以进行转换了。

建议楼主还是去查阅一下API文档。里面会有详细的介绍。
回复 使用道具 举报
黑马张健 发表于 2012-5-30 19:16
import java.util.Arrays;
import java.util.Comparator;

嗯 我研究下你讲的方法。谢谢
回复 使用道具 举报
江南 黑马帝 2012-5-30 20:03:34
8#
使用Integer.valueOf(String args) 就可以了;

看代码 不知道是不是你所需要的 都是你的代码 我只是稍微改了那么一点点

public class BubbleSort
{
        public static void main(String[] args)
        {
                System.out.println("输入n个数字,请用空格分隔");
                Scanner sc = new Scanner(System.in);
                String a[] = sc.nextLine().split(" ");

                /*
                 * 问题在这里:我用一个String类型数组将几个数字装了进来,但是输出的时候我要将String类型的转换
                 * 为整形的才能比较下面a和a[j]的大小,这时我应该如何处理?
                 */
                for (int i = 0; i < a.length; i++)
                {
                        for (int j = 0; j < a.length; j++)
                        {
                                if (Integer.valueOf(a[i]) > Integer.valueOf(a[j]))
                                {
                                        int temp = Integer.valueOf(a[j]);
                                        a[j] = a[i];
                                        a[i] = temp+"";
                                }
                        }
                }
                for (int i = 0; i < a.length; i++)
                {
                        System.out.print(a[i]);

                }

        }
}

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
江南 发表于 2012-5-30 20:03
使用Integer.valueOf(String args) 就可以了;

看代码 不知道是不是你所需要的 都是你的代码 我只是稍微改 ...

嗯 我调试了一下 成功了  只是最后应该是System.out.print(a+" ");   不然输出的数据都是挨着的了  谢谢了~:handshake
回复 使用道具 举报
黑马张扬 发表于 2012-5-30 19:14
换个思考方式 你都是装数字 就定一个int数组 或者是long数组 不一定要定义String数组 ...

可是我是要用Scanner动态的装入啊,我从键盘上输入了一些数字,每个数字用空格隔开,那么我用什么方法使用一个int数组将分隔开的一个个数字装进那个int数组呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马