package sean.home.test;import java.util.*;public class TestStringToArray { public static void main(String[] args) { String raw = "1,2,3,\n4,5,6,\n7,8,9,\n"; StringTokenizer st = new StringTokenizer(raw, " \n"); int a = st.countTokens(); int[][] res = new int[a][]; for (int i = 0; i < a; i++) { StringTokenizer st2 = new StringTokenizer(st.nextToken(), ","); int b = st2.countTokens(); res[i] = new int[b]; for (int j = 0; j < b; j++) { res[i][j] = Integer.parseInt(st2.nextToken()); } } show2DArray(res); }
public static void show2DArray(int[][] arr) { for (int i = 0; i < arr.length; i++) { int[] temp = arr[i]; for (int j = 0; j < temp.length; j++) { System.out.print(temp[j]); System.out.print(" "); } System.out.println(); } }
"1,2,3,\n4,5,6,\n7,8,9,\n"我需要把里面的123456789这些数字提取出来,放到一个二维数组中,这个二维数组是什么呢?int[][] aaa=int[3][3]使aaa这个二维数组的内容变为:
{1,2,3}
{4,5,6}
{7,8,9}
String raw = "1,2,3,\n4,5,6,\n7,8,9,\n";
StringTokenizer st = new StringTokenizer(raw, " \n");
int a = st.countTokens();
int[][] res = new int[a][];
for (int i = 0; i < a; i++) {
StringTokenizer st2 = new StringTokenizer(st.nextToken(), ",");
int b = st2.countTokens();
res[i] = new int[b];
for (int j = 0; j < b; j++) {
res[i][j] = Integer.parseInt(st2.nextToken());
}
}
show2DArray(res);
}
public static void show2DArray(int[][] arr) {
for (int i = 0; i < arr.length; i++) {
int[] temp = arr[i];
for (int j = 0; j < temp.length; j++) {
System.out.print(temp[j]);
System.out.print(" ");
}
System.out.println();
}
}
}// 随手写的,有很多偷懒的地方,仅供参考。
String[] groundMatrixRow;
int[][] groundMaze=new int[][]; groundMatrix=groundTa.getText();
groundMatrixRow=groundMatrix.split("\n");
for(int i=0;i<groundMatrixRow.length;i++)
{
String[] groundElement=groundMatrixRow[i].split(",");
for(int j=0;j<groundElement.length;j++)
groundMaze[i][j]=Integer.parseInt(groundElement[j]);
}
package stringtoarray;public class Convert {
String str;
int p[][];
public Convert(String str) {
this.str=str;
/*int i;
char c1;
for (int j1 = 0; ; j1++) {
c1 = str.charAt(j1);
if(c1==','){
}
}*/
}
public Convert(){
this("");
}
private int countline(){
int returnNum=0;
char c1;
for(int j1=0;j1<str.length();j1++){
c1=str.charAt(j1);
if(c1=='\n')returnNum++;
}
return returnNum;
}
private int countrow(String str1){
int returnNum=0;
char c1=' ';
int j1=0;
try{
for (j1 = 0; j1 < str1.length(); j1++) {
c1 = str1.charAt(j1);
if (c1 == ',') returnNum++;
}
}catch(Exception e){
System.err.println(str1);
}
return returnNum; }
public int[][] doConvert(){
int i1=0;
i1=countline();
p=new int[i1][];
int i2=0;
String[] tp1=new String[i1];
int[] tpint=new int[i1];
for(int i3=0;i3<i1;i3++){
for (int i4=i2;i2==0||str.charAt(i2-1)!='\n' ; i2++) {
if(str.charAt(i2)=='\n'){
tp1[i3] = str.substring(i4, i2);
System.out.println(tp1[i3]);
}i2++; }
}
for(int i6=0;i6<i1;i6++){
// System.out.println(countrow(tp1[i6]));
tpint[i6]=this.countrow(tp1[i6]);
p[i6]=new int[tpint[i6]];
}
/* int maxrow=0;
for(int i6=0;i6<i1;i6++){
maxrow = maxrow>=i6?maxrow:i6;
}*/
for(int kx=0;kx<i1;kx++){
int total=0;
for(int ky=0;ky<tpint[kx];ky++){
String temp=tp1[kx].substring(total,total+1);
total++;
try{
p[kx][ky] = Integer.parseInt(temp);
}catch(Exception e){
System.err.print("Some Error in String!");
System.exit(0);
}
}
}
return p;
}
public static void main(String[] args) {
// Convert convert1 = new Convert(args[1]);
Convert convert1 = new Convert("1,2,3,\n4,5,6,\n");
int[][] temp1=convert1.doConvert();
for(int i=0;i<temp1.length;i++){
for (int j = 0; j < temp1[i].length; j++) {
System.out.print(temp1[i][j] + '\t');
}
System.out.println();
}
/* for(int i=0;i<"1,2,3,\n4,5,6,\n".length();i++){
System.out.println("1,2,3,\n4,5,6,\n".charAt(i));
}*/
}}
在运行那些代码前,获取一下系统时间,Date d1=new Date(),运行完后再运行Date d2=new Date。这样d2.getTime()-d1.getTime()最小的就是算法最优。