求Java中字符串扫描程序(400分) 接口为 public float[][] strScan(String str) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public float[][] strScan(String str){ 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(",");得到一维数组,二维的很容易啦 public static void main(String[] arg){ 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;} public static float[][] strScan(String str) { 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); package com.hhj.examples;import java.util.List;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 bunchclass 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; }} 组成最小的数 关于泛型方法的小疑问,马上结账。 做过java和C++ socket的朋友请进 快排······· 请教大家一个java串口收发短信的问题。 谁能帮我分析一下这段代码 初级JAVA问题,哪位高手帮忙测试一下,example.java 请问大虾,HTMLencoder类在哪儿 请教各位高手:HIS系统用BS结构开发的可行性有多少? 如何用DOM对象得到参数? 老问题新手请帮帮忙,为何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;
}
}