public class ZiFuChuan2 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
 *这个程序能选出字符串内的数字类型的字符串
 */

//声明一个字符串,里面含有数字
String str = "234khj455hj234kl234好看好3423/.,/.,/.,df43554";
//声明一个String类型的数组,并且使用循环使里面的元素是字符串0-9
String[] array1 = new String[10];
for (int i = 0; i <= 9; i++) {
array1[i] = Integer.toString(i);//直接将整型转换成字符串类型
}
//声明一个整型用于保存字符串的长度
int a = str.length();
//再声明一个字符串数组,用于将字符串的元素保存在此数组中
String[] array2 = new String[a];
for (int j = 0; j < str.length(); j++) {
array2[j] = str.substring(j, j + 1);
// System.out.print(array2[j]+" ");
}

//使用循环·判断·已经将字符串保存起来的字符串数组的元素是否与包含0-9的字符串数组的元素相等

for (int k = 0; k < a; k++) {
for (int m = 0; m < array1.length; m++) {
//如果相等·则说明该元素是数字··将其输出
boolean bool=array2[k].equals(array1[m]);
if (bool) {
System.out.print(array2[k]);
}
}
} }}
//此程序中·array1[i] = Integer.toString(i);//直接将整型转换成字符串类型
这行代码里·我换一种方式也可以实现·代码如下:
array1[i]=i+"";
这是为什么呢?为什么加上“”之后就可以实现转换·而将i显示转换的时候反而不可以?实在疑惑···

解决方案 »

  1.   


    public class ZiFuChuan2 {/**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    /*
    *这个程序能选出字符串内的数字类型的字符串
    *///声明一个字符串,里面含有数字
    String str = "234khj455hj234kl234好看好3423/.,/.,/.,df43554";
    //声明一个String类型的数组,并且使用循环使里面的元素是字符串0-9
    String[] array1 = new String[10];
    for (int i = 0; i <= 9; i++) {
    array1[i] = Integer.toString(i);//直接将整型转换成字符串类型
    }
    //声明一个整型用于保存字符串的长度
    int a = str.length();
    //再声明一个字符串数组,用于将字符串的元素保存在此数组中
    String[] array2 = new String[a];
    for (int j = 0; j < str.length(); j++) {
    array2[j] = str.substring(j, j + 1);
    // System.out.print(array2[j]+" ");
    }//使用循环·判断·已经将字符串保存起来的字符串数组的元素是否与包含0-9的字符串数组的元素相等for (int k = 0; k < a; k++) {
    for (int m = 0; m < array1.length; m++) {
    //如果相等·则说明该元素是数字··将其输出
    boolean bool=array2[k].equals(array1[m]);
    if (bool) {
    System.out.print(array2[k]);
    }
    }
    }}}
    //此程序中·array1[i] = Integer.toString(i);//直接将整型转换成字符串类型
    这行代码里·我换一种方式也可以实现·代码如下:
    array1[i]=i+"";
    这是为什么呢?为什么加上“”之后就可以实现转换·而将i显示转换的时候反而不可以?实在疑惑···为什么我发不了源代码的形式?
      

  2.   


    当一个对象或者是原型加上一个String对象的时候将自动调用对象的toString()方法(原型返回字符表现),原型显示转换为String肯定是不行的啦
      

  3.   


    public static void main(String[] args){
    String str = "234khj455hj234kl234好看好3423/.,/.,/.,df43554";
    char[] a =str.toCharArray();
    StringBuffer sb = new StringBuffer();
    for(int i=0 ; i< a.length ; i++){
    char temp = a[i];
    String value = temp+"";
    try {
    Integer.parseInt(value);
    sb.append(value);
    } catch (NumberFormatException e) {
    }
    }
    System.out.println(sb.toString());
    }
      

  4.   

    由于int 是基本数据类型,它可以自动转换成float 或是double类型,但不能自动转换成String类型。1. 由于编译器的编译是从左向右的,当首先遇到int型的数据时,会暂时把它当int类型的看待;
    2. 如果没有加上“”,则编译器会发现左边是String类型的,而右边是int类型的,如前面所说的,int类型的数据不能自动转换成String类型的,所以不行。
    3. 如果加上了“”,当编译到“”时,编译器认识到这是一个字符串,于是会自动的把int类型的数据也转换成字符串型,故而可行。楼主可以测试以下几个问题,就能明白是怎么回事了。
    1. String a = 1 + 2 + "";  System.out.println(a);
    2. String a = 1 + ""+ 2;   System.out.println(a);
    3. String a = "" + 1 + 2;  System.out.println(a);