package nick;import com.mathworks.toolbox.javabuilder.*;
import JSP.*;class getJSP
{
   public static void main(String[] args)
   {
        /* Stores input value */
MWNumericArray n1 = null; 
MWNumericArray n2 = null; 
MWNumericArray n3 = null; 
MWNumericArray n4 = null; 
MWNumericArray n5 = null;
MWNumericArray n6 = null;
MWNumericArray n7 = null;
MWNumericArray n8 = null;Object[] result = null;    /* Stores the result */
JSP theJSP = null;     /* Stores magic class instance */
       
      try
      {
                   
 double[][] T={{1,3,6,7,3,6},
       {8,5,10,10,10,4},
 {5,4,8,9,1,7},
 {5,5,5,3,8,9},
 {9,3,5,4,3,1},
 {3,3,9,10,4,1}
 };
 double[][] M={{2,0,1,3,5,4},
 {1,2,4,5,0,3},
 {2,3,5,0,1,4},
 {1,0,2,3,4,5},
 {2,1,4,5,0,3},
 {1,3,5,0,4,2}
         };//说明:为了测试程序,我先简化了,直接把T和M写到了程序里,而n1到n6这六个参数好办,都是简单数据类型,所以我在控制台输入java getJSP 100 300 0.8 0.1 6 6 来运行程序
          n1=new MWNumericArray(Double.valueOf(args[0]),MWClassID.DOUBLE);
  n2=new MWNumericArray(Double.valueOf(args[1]),MWClassID.DOUBLE);
          n3=new MWNumericArray(Double.valueOf(args[2]),MWClassID.DOUBLE);
          n4=new MWNumericArray(Double.valueOf(args[3]),MWClassID.DOUBLE);
  n5=new MWNumericArray(Double.valueOf(args[4]),MWClassID.DOUBLE);
  n6=new MWNumericArray(Double.valueOf(args[5]),MWClassID.DOUBLE); 
  
  n7=new MWNumericArray(T,MWClassID.DOUBLE);//  应该为n7=new MWNumericArray(Double.valueOf(args[6]),MWClassID.DOUBLE);但是这里的args[6]就是T,为一个n*m的二维数组,如何在控制台输入数组
  n8=new MWNumericArray(M,MWClassID.DOUBLE);//  应该为n8=new MWNumericArray(Double.valueOf(args[7]),MWClassID.DOUBLE);但是这里的args[7]就是M,为一个n*m的二维数组,如何在控制台输入数组//问题:正如上所述,我不能直接写死T 和M,而应该作为一个n*m的二维数组参数由用户输入,就像输入那些简单数据类型一样,应该怎么做?
         /* Create new JSP object */
         theJSP=new JSP();
         /* Compute and print result */
 result=theJSP.JSP(1,n1,n2,n3,n4,n5,n6,n7,n8);//1代表1个输出参数,n1,n2,n3,n4...n8为输入参数
          System.out.println(result[0]);
          }
      catch (Exception e)
      {
         System.out.println("Exception: " + e.toString());
      }      finally
      {
         /* Free native resources */
MWArray.disposeArray(n1);
MWArray.disposeArray(n2);
MWArray.disposeArray(n3);
MWArray.disposeArray(n4);
MWArray.disposeArray(n5);
MWArray.disposeArray(n6);
MWArray.disposeArray(n7);
MWArray.disposeArray(n8);
MWArray.disposeArray(result);
         if (theJSP != null)
            theJSP.dispose();
      }
   }
}

解决方案 »

  1.   

    除了控制台输入意外,你可以写一个配置文件(txt,ini,xml都行,这里就无所谓了),把你需要的数组定义在文件里,把你程序定义T,M两个数组的地方换成从文件里读取数组,并赋值给T和M。如果从控制台直接读应该用字符串拆分吧,比如定义成  1,3,6,7,3,6|8,5,10,10,10,4|5,4,8,9,1,7|5,5,5,3,8,9|9,3,5,4,3,1|3,3,9,10,4,1  这种形式,拆分两次,赋值给数组,不过这种方案有一种限制,那就是命令行的参数长度是有限制的,应该是255(忘了)
      

  2.   

    如果是一次行输入的话..args就可以获得而不过要想ACM那种题目输入的话...请等等..我去给你看下ACM里的例题
      

  3.   

    import java.io.*;
    import java.util.*;
    public class a{  
    public static void main(String args[]) throws Exception           
    {                   
    Scanner cin=new Scanner(System.in);              
    int a=cin.nextInt(),b=cin.nextInt();            
    System.out.println(a+b);           
    }
    }(JDK1.5或以上的代码)
    这个是A+B的例子
    运行程序之后
    输入两个数字1 2 回车
    输出3你可以
    输入 2 3表示2*3的数组
    然后
    1 2 3
    2 3 4
    输入数组具体内容
    具体代码
    Scanner cin=new Scanner(System.in); 
    int T[];
    n=cin.nextInt();
    m=cin.nextInt();
    T=new int[n][m];
    for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
    {
    T[i][j]=cin.nextInt();
    }
    这样就能读去一个N*M的二围数组了....并且数组的范围是用户输入的。..呵呵是要做ACM的题吗???也就那种题特别需要这种输入
      

  4.   

    谢谢jefflovejava,你给了我新的思路,但是我的分只能给songyun870了,毕竟他给出了代码,解决了我的问题,谢谢
      

  5.   

    同时希望能和你们交个朋友,有什么问题相互可以帮助,这样学习起来彼此也更轻松一点,快乐一点:)
    如果可以,请留下e-mail或者QQ也可以。
    我的是[email protected] QQ13646892