先按一维或链表读,记录一下max长度,与max宽度,然后new一个二维数组,写进取,题目没大看懂,不只这样可否?
解决方案 »
- 1000分:请教一个JNA 调用 DLL的参数传递
- 想在才单项中用JCheckBOXMenuItem实现多选功能,可它前面的小方框能不能去掉?使其选中时候只显示对号!
- 新手急:在java中调用peri脚本,读取时被卡
- JNLP从网页打开后,运行进程无法关闭问题
- 高阶矩阵的高效实现
- 关于<java rules>中的一处不明白
- 各位大哥:帮忙写一段程序,要求适合各种数据库!!
- statement 执行execute来进行数据的插入如何判断插入结果是否正常? 如果使用executeUpdate又怎么做?
- 象jbuilder里的help文档左边框目录一级一级展开是不是用JTree这个类?
- CSDN的高手们,请多多帮忙!!感激不尽,唯以微薄之分相献!
- 大家帮个忙,关于JFileChooser的一个问题?
- JTable控件, 怎么让以列为单位可以横向滚动?
"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()最小的就是算法最优。