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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 狼王 高级黑马   /  2013-6-11 10:30  /  3689 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 狼王 于 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);。请问高人我该怎么改?

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1 赞一个!

查看全部评分

14 个回复

倒序浏览
报的什么异常。。。。
回复 使用道具 举报
mvplee 发表于 2013-6-11 10:43
报的什么异常。。。。

Exception in thread "main" java.lang.NumberFormatException: For input string: ""5""
回复 使用道具 举报
狼王 发表于 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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1

查看全部评分

回复 使用道具 举报
/*数组的应用应该注意数组的位置(数组下标)问题
   这样改的话就可以了
*/
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]+",");
               
        }

        }
       

}
回复 使用道具 举报
张yy 发表于 2013-6-11 11:23
/*数组的应用应该注意数组的位置(数组下标)问题
   这样改的话就可以了
*/

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

不行哦,老兄
回复 使用道具 举报

还没呢,他们说的我都试了,都不行
回复 使用道具 举报
张yy 中级黑马 2013-6-11 12:06:51
11#
本帖最后由 张yy 于 2013-6-11 12:29 编辑


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

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

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1 努力去解决问题,是我辈学习得榜样....

查看全部评分

回复 使用道具 举报
楼主   我改了一下  
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

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1 努力去解决问题,是我辈学习得榜样....

查看全部评分

回复 使用道具 举报
   arr = Integer.parseInt(str);
你应该遍历出一个元素就转换成int类型的才对,左边是一个数组,右边是一个元素怎么能通过编译啊 ,改成arr[i]=Integer.parseInt(str);
回复 使用道具 举报
for循环中改成
arr[i] = Integer.parseInt(str[i]);
                    System.out.print(arr[i]+",");

即可
回复 使用道具 举报
楼主你好,问题解决了没? 解决了就去修改成 “已解决”吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马