先按一维或链表读,记录一下max长度,与max宽度,然后new一个二维数组,写进取,题目没大看懂,不只这样可否?

解决方案 »

  1.   

    不明白你说什么...String也是数组???
      

  2.   

    这样说吧有一个String,内容如下:
    "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}
      

  3.   

    conanrei2004(目标-Microsoft) 的方法就可以了
      

  4.   

    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();
        }
      }

    }// 随手写的,有很多偷懒的地方,仅供参考。
      

  5.   

    已经实现……思路和楼上的差不多,不过用的是String的clip方法大致代码如下:String groundMatrix;
    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]);
    }
      

  6.   

    -___-~  clip为笔误,是split方法
      

  7.   

    写了个大概算法,里面有一些错误,太晚了不想用心用DEBUGGER,自己稍微看一下
    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));
       }*/
        
      }}
      

  8.   

    说到最优,我倒觉得用split或者StringTokenizer都不错。你可以这样测一下:
    在运行那些代码前,获取一下系统时间,Date d1=new Date(),运行完后再运行Date d2=new Date。这样d2.getTime()-d1.getTime()最小的就是算法最优。