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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 平凡成就非凡 中级黑马   /  2014-2-25 13:17  /  1624 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String st=bufr.readLine();
如果键盘输入的是1234,如何把st转换成int型数组。
请各位老师,师兄师姐帮帮忙,谢谢大家。

评分

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

查看全部评分

11 个回复

倒序浏览
先判断是否为纯数字,和是否在int的范围大小内部,再进行转唤吧.

个人觉得,应该要避免出现这种情况,要不就在输入时进行判断,要不再写个重载函数

评分

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

查看全部评分

回复 使用道具 举报
String str = "1,2,3";

String[] strarr = str.split(",");
Integer[] strs = new Integer[str.length];
for(int x = 0;x<str.length x++){
strs[i] = Integer.parseInt(strarr[i]);

大概的思路就是这样的
}

评分

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

查看全部评分

回复 使用道具 举报
谢谢,我想问的是没有逗号分割的。就是1234是连续输入的。
回复 使用道具 举报
我的解决办法比较烦了
  1. import java.io.*;
  2. class StringToInt {
  3.         public static void main(String[] args) throws IOException {
  4.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  5.                 String str = br.readLine();
  6.                 char[] charArray = str.toCharArray();
  7.                 int[] intArray = new int[charArray.length];
  8.                 Character charTemp = new Character('a');
  9.                 for (int i=0; i<charArray.length; i++) {
  10.                          intArray[i] =  charTemp.digit(charArray[i],10);
  11.                 }
  12.                 //打印Int数组
  13.                 for (int i=0; i<intArray.length; i++) {
  14.                         System.out.println(intArray[i]);
  15.                 }

  16.                 br.close();
  17.         }
  18. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
薛旻 发表于 2014-2-25 15:12
我的解决办法比较烦了

谢谢,
                 
回复 使用道具 举报
自己写的函数,没有用系统函数:
  1. public static int parseInt(String Array)
  2.         {
  3.         if(Array==null||Array.equals(""))
  4.             throw new IllegalArgumentException("参数不能为null或空串!!!");
  5.         int result = 0;
  6.         for(int i=0,len=Array.length();i<len;i++){
  7.             char c = Array.charAt(i);
  8.             if (c>='0'&&c<='9')
  9.                 result=result*10+(int)(c-'0');
  10.             else
  11.                 throw new IllegalArgumentException("Array中只能包含数字!!!");
  12.         }
  13.         return result;
  14.     }
复制代码




评分

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

查看全部评分

回复 使用道具 举报
syw02014 发表于 2014-2-25 15:40
自己写的函数,没有用系统函数:

result=result*10+(int)(c-'0');为什么还要result*10呢?
回复 使用道具 举报
思路:接收一个录入的字符串,将他通过toCharArray()方法转换成字符数组,然后通过判断,对其进行筛选,是数字就装入数组,不是就剔除掉。
回复 使用道具 举报
可不可以把字符串“1234”一个一个截出啦,如“1”,“2”。再把它转换成int类型呢
回复 使用道具 举报
平凡成就非凡 发表于 2014-2-25 15:48
result=result*10+(int)(c-'0');为什么还要result*10呢?

字符串123转换为整数时:
0*10+1=1
1*10+2=12
12*10+3=123
能明白吗?
回复 使用道具 举报
syw02014 发表于 2014-2-25 16:40
字符串123转换为整数时:
0*10+1=1
1*10+2=12

谢谢,明白啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马