接口为 public float[][] strScan(String str)
解决方案 »
- jdic 中flash播放问题
- 何时使用protected
- Thread中的interrupt()问题……
- JAVA读PDF问题
- JAVA要这样去学,拜拖个位,能给我一点提示吗?
- 初学java,求教一个巨简单的问题
- 出现"Exception in thread "main" java.lang.NoClassDefFoundError: Student"错误,是什么原因?
- Thread safe是什么意思
- 我用了JBuilder 6的注册机,但为什么还是注册不起?
- 如何能将字符串转换成数学运算符
- 老问题新手请帮帮忙,为何jtable的第一列checkbox显示不出来
- 请教一个socket问题(送100分)
ArrayList list = null;
ArrayList item = null;
int digitstart = -1;
for (int i = 0; i < str.length(); i++) {
switch (str.charAt(i)) {
case '{':
if (list == null) {
list = new ArrayList();
} else if (item == null) {
item = new ArrayList();
digitstart = i + 1;
} else {
System.out.println("error!");
return null;
}
break;
case '}':
if (item != null) {
if (digitstart >= 0 && digitstart < i) {
item.add(new Float(Float.parseFloat(str.substring(digitstart, i))));
digitstart = -1;
}
float[] ii = new float[item.size()];
for (int j = item.size() - 1; j >= 0; j--) {
ii[j] = ((Float) item.get(j)).floatValue();
}
list.add(ii);
item = null;
}
break;
case ',':
if (i == str.length() - 1 || digitstart >= i) {
System.out.println("error!");
return null;
}
if (digitstart >= 0) {
item.add(new Float(Float.parseFloat(str.substring(digitstart, i))));
digitstart = i + 1;
}
break;
}
}
float[][] res = new float[list.size()][];
for (int i = list.size() - 1; i >= 0; i--) {
res[i] = (float[]) list.get(i);
}
return res;
}
str="{{1,2,3},{2,3,4},{4,5,6},{7,8,9},{0,0,0}}";
str=str.replaceAll("{","");
str=str.replaceAll("}","");
String[] arr=str.split(",");
得到一维数组,二维的很容易啦
String str="{{1,2,3},{2,3,4},{4,5,6},{7,8,9},{0,0,0}}";
float[][] f=strScan(str);
for(int i=0;i<f.length;i++){
System.out.println();
for(int j=0;j<f[i].length;j++)
System.out.print(f[i][j]+" ");
}
}public static float[][] strScan(String str){
String s=str.substring(2,str.length()-2);
String[] srow=s.split("\\},\\{");
float[][] f=new float[srow.length][];
for(int i=0;i<srow.length;i++){
String[] scol=srow[i].split(",");
f[i]=new float[scol.length];
for(int j=0;j<scol.length;j++)
f[i][j]=Float.parseFloat(scol[j]);
}
return f;
}
str=str.substring(2,str.length()-2);
ArrayList al=new ArrayList();
while(str.indexOf("},{")>=0) {
al.add(str.substring(0,str.indexOf("},{")));
str=str.substring(str.indexOf("},{")+3);
}
al.add(str);
float[][] result=new float[al.size()][3];
for(int i=0;i<result.length;i++) {
StringTokenizer strToken =new StringTokenizer((String)al.get(i),",");
result[i][0]=new Float(strToken.nextToken()).floatValue();
result[i][1]=new Float(strToken.nextToken()).floatValue();
result[i][2]=new Float(strToken.nextToken()).floatValue();
}
return result;
}调用如下:
String str="{{1,2,3},{3,4,5},{34,56,78}}";
float[][] f = strScan(str);
import java.util.ArrayList;
import java.util.StringTokenizer;/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/public class ParseBunchFactory {
public ParseBunchFactory() {
} public static void main(String[] args) {
ParseBunchFactory.getIParseBunch().strScan(
"{{1,2,3},{2,3,4},{4,5,6},{7,8,9},{0,0,0}}");
} public static IParseBunch getIParseBunch() {
return new ParseBunchImp();
}
}// class to solute parsing bunch
class ParseBunchImp implements IParseBunch {
public ParseBunchImp() { } public String[][] strScan(String str) {
if (str == null || str.trim().length() == 0)
return null;
List arrayList = new ArrayList();
String source = str.trim();
String temp = "";
char[] chars = source.toCharArray(); /**
* 将{{1,2,3},{2,3,4},{4,5,6},{7,8,9},{0,0,0}}
* 存放到ArrayList中,格式为1,2,3||2,3,4||4,5,6
*/
for (int i = 1; i < chars.length-1; i++) {
if (chars[i] == '{') {
temp = "";
continue;
}
if (chars[i] != '}') {
temp += chars[i];
}else{
arrayList.add(temp);
}
}
if(arrayList.isEmpty())
return null; String[][] arrayStr = new String[arrayList.size()][];
for(int i=0; i<arrayList.size(); i++){
arrayStr[i] = this.divideStr(((String)arrayList.get(i)),",");
System.out.println();
for(int j=0; j<arrayStr[i].length; j++){
System.out.println(arrayStr[i][j]);
}
}
return arrayStr;
}
/**
* 用seperator把src分解成数组
* @param src
* @param seperator
* @return
*/
private String[] divideStr(String src, String seperator){
if(src==null || src.trim().length() ==0)
return null;
StringTokenizer token = new StringTokenizer(src, seperator);
String[] array = new String[token.countTokens()];
int i=0;
while(token.hasMoreElements()){
array[i++] = token.nextToken();
}
return array;
}
}