黑马程序员技术交流社区

标题: 有关String数组转换成int数组的问题 [打印本页]

作者: 狼王    时间: 2013-6-11 10:30
标题: 有关String数组转换成int数组的问题
本帖最后由 狼王 于 2013-6-11 10:31 编辑

public class Trans {
       public static void main(String[] args) {
            //1、在控制台输入一个字符串,用逗号隔开,
             Scanner scan = new Scanner(System.in);
             System.out.print("请输入组成的数组字符串,用逗号隔开:");
             String string = scan.nextLine();
            //2、再用split()方法转换为一个字符串数组,再转成int数组,
             String[] str = string.split(",");
             int[] arr= new int[str.length];
             for (int i = 0; i < str.length; i++) {
                    arr = Integer.parseInt(str);
                    System.out.print(arr+",");
}
}
问题出现在循环中的转换过程,即arr = Integer.parseInt(str);。请问高人我该怎么改?

作者: mvplee    时间: 2013-6-11 10:43
报的什么异常。。。。
作者: 狼王    时间: 2013-6-11 10:50
mvplee 发表于 2013-6-11 10:43
报的什么异常。。。。

Exception in thread "main" java.lang.NumberFormatException: For input string: ""5""
作者: mvplee    时间: 2013-6-11 11:12
狼王 发表于 2013-6-11 10:50
Exception in thread "main" java.lang.NumberFormatException: For input string: ""5""

字符串转数字时,如果字符串里有其它类型字符,不是数字,转换 时就出NumberFormat
  1. import java.io.*;
  2. import java.util.*;

  3. public class J {
  4.        public static void main(String[] args) {
  5.             //1、在控制台输入一个字符串,用逗号隔开,
  6.              Scanner scan = new Scanner(System.in);
  7.              System.out.print("请输入组成的数组字符串,用逗号隔开:");
  8.              String string = scan.nextLine();
  9.             //2、再用split()方法转换为一个字符串数组,再转成int数组,
  10.              String[] str = string.split(",");
  11.                         for (int i=0;i<str.length ;i++ )
  12.                         {
  13.                                 System.out.println(Integer.parseInt(str[i]));
  14.                         }
  15. }
  16. }
复制代码

作者: 张yy    时间: 2013-6-11 11:23
/*数组的应用应该注意数组的位置(数组下标)问题
   这样改的话就可以了
*/
import java.util.Scanner;


public class Test {

        /**
         * @param args
         */
        public static void main(String[] args) {
               
                //1、在控制台输入一个字符串,用逗号隔开,
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入组成的数组字符串,用逗号隔开:");
        String string = scan.nextLine();
        //2、再用split()方法转换为一个字符串数组,再转成int数组,
        String[] str = string.split(",");
        int[] arr= new int[str.length];
        for (int i = 0; i < str.length; i++) {
               arr[i] = (int) Integer.parseInt(str[i]);
               System.out.print(arr[i]+",");
               
        }

        }
       

}
作者: 蚂蚁搬家    时间: 2013-6-11 11:36
张yy 发表于 2013-6-11 11:23
/*数组的应用应该注意数组的位置(数组下标)问题
   这样改的话就可以了
*/

你这个好像不行吧,我刚试过,板凳回答的比较靠谱!
作者: 不破大地    时间: 2013-6-11 11:44
Integer.parseInt(str)的返回值是基本数据类型int,而不是一个int数组,这里需要将int类型转换成int数组。如楼上所言。
作者: Renica    时间: 2013-6-11 11:47
解决了没啊?
作者: 狼王    时间: 2013-6-11 11:53
张yy 发表于 2013-6-11 11:23
/*数组的应用应该注意数组的位置(数组下标)问题
   这样改的话就可以了
*/

不行哦,老兄
作者: 狼王    时间: 2013-6-11 11:59

还没呢,他们说的我都试了,都不行
作者: 张yy    时间: 2013-6-11 12:06
本帖最后由 张yy 于 2013-6-11 12:29 编辑


这是我的运行结果,麻烦你把你的异常截个图
请注意哈,我自己用的类名是Test
关键在于  你把你以前的for循环
for (int i = 0; i < str.length; i++) {
                    arr = Integer.parseInt(str);
                    System.out.print(arr+",");
}

改成和图中的一样就可以了

作者: 张歆明    时间: 2013-6-11 17:35
楼主   我改了一下  
import java.util.*;
class Trans {
       public static void main(String[] args) {
            //1、在控制台输入一个字符串,用逗号隔开,
             Scanner scan = new Scanner(System.in);
             System.out.print("请输入组成的数组字符串,用逗号隔开:");
             String string = scan.nextLine();
            //2、再用split()方法转换为一个字符串数组,再转成int数组,
             String[] str = string.split(",");
             int[] arr= new int[str.length];
             for (int i = 0; i < str.length; i++) {
                   arr = Integer.parseInt(str);  //arr = Integer.parseInt(str);  肯行不行  Integer.parseInt()参数是String  现在 in写的Str是String[]
                                                                              //左边arr是 int[] 右边方法返回 int  int也不能赋值给int[]   编译出错
                    System.out.print(arr+",");               //输出的时候   arr是 int[]  直接输出 就是地址    [I@5ddb6e,[I@5ddb6e,[I@5ddb6e,   因为arr恩是数组的首地址 你看看  是不是输入三个元
                                                                              //素  出来的都是一样的地址呢? 恩
                        }
        }
}
楼主 我的运行结果在下面



QQ图片20130611172943.jpg (12.08 KB, 下载次数: 0)

QQ图片20130611172943.jpg

作者: j816326    时间: 2013-6-11 18:08
   arr = Integer.parseInt(str);
你应该遍历出一个元素就转换成int类型的才对,左边是一个数组,右边是一个元素怎么能通过编译啊 ,改成arr[i]=Integer.parseInt(str);

作者: 张承富    时间: 2013-6-13 17:02
for循环中改成
arr[i] = Integer.parseInt(str[i]);
                    System.out.print(arr[i]+",");

即可
作者: 夜默    时间: 2013-6-14 11:21
楼主你好,问题解决了没? 解决了就去修改成 “已解决”吧!




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