首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • String[][]删除操作 [已结贴,结贴人:kuaileyu]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-08 12:04:08 楼主
    p[5][2]={{ "fh ", "nh "},{ "mm ", "nh"},{ "gg",''},{ "jj ",''},{ "gh ",''}}
    我想去掉{ "gg",''}这一行,又没有现成的方法?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-08 12:08:541楼 得分:1

    没有, 要自己写.
    要new一个新的数组, 长度为原来减一
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-08 12:09:472楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-08 12:14:223楼 得分:0
    要是你的目的是删除第3行那就这样啊:


    Java code
    List list=Arrays.asList(p); list.remove(3);

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wh_chen
    • 等级:
    发表于:2008-08-08 12:18:364楼 得分:2
    Java code
    public class test{ public static void main(String[] args) { String[][] p = {{"fh","nh"},{"mm","nh"},{"gg",""},{"jj",""},{"gh",""}}; int count = 0; // 前移 for (int i = 0; i < p.length; i++) { if (p[i][0] == "gg") { for (int j = i + 1; j < p.length; j++) { p[j - 1][0] = p[j][0]; p[j - 1][1] = p[j][1]; } count++; } } //后面的置空 for(int i = p.length - 1;count > 0; count--) { p[i][0] = ""; p[i][1] =""; i--; } for (int i = 0; i < p.length; i++) { for (int j = 0; j < p[i].length; j++) { System.out.print(p[i][j] + " "); } System.out.println(); } } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-08 12:23:305楼 得分:5
    Java code
    public class DeleteMemInArray { public static void main (String args[]){ String[][] p={{ "fh ", "nh "},{ "mm ", "nh"},{ "gg",""},{ "jj", ","},{ "gh", ","}}; System.out.print("原数组元素有:"); for (int i=0; i<p.length; i++) for (int j=0; j<p[i].length; j++) System.out.print(p[i][j] +" "); p[2] = null; //删除{ "gg",""} for (int i=2; i<p.length-1; i++) p[i] = p[i+1];//后续数组元素向前移动 System.out.print("\n删除后的数组元素有:"); for (int i=0; i<p.length-1; i++) for (int j=0; j<p[i].length; j++) System.out.print(p[i][j] +" "); } }

    Java code
    原数组元素有:fh nh mm nh gg jj , gh , 删除后的数组元素有:fh nh mm nh jj , gh ,


    其实p[2] = null;是可以省掉的  只要把后面的元素覆盖掉前面的即可 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-08 12:30:546楼 得分:0
    我和4楼的思路一样,不过我新建了一个String[][],将移动后的String赋给它,再循环新的String[][]。
    这样对不对?我写写看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wh_chen
    • 等级:
    发表于:2008-08-08 12:34:287楼 得分:1
    没错 我原来的代码有个弊端就是原数组的长度不能改变
    只能在后面动态置空

    给你的建议是取得删除后原数组“实际”的长度
    定义一个新的该长度的数组
    arrayCopy方法即可
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-08 12:45:298楼 得分:0
    String[][]有arrayCopy方法吗/?我最终要得到的还是String[][]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wh_chen
    • 等级:
    发表于:2008-08-08 12:53:099楼 得分:5
    Java code
    public class test{ public static void main(String[] args) { String[][] p = {{"fh","nh"},{"mm","nh"},{"gg",""},{"jj",""},{"gh",""}}; int count = 0; // 前移 for (int i = 0; i < p.length; i++) { if (p[i][0] == "gg") { for (int j = i + 1; j < p.length; j++) { p[j - 1][0] = p[j][0]; p[j - 1][1] = p[j][1]; } count++; } } String [][] pNew = new String[p.length - count][2]; for (int i = 0; i < pNew.length; i++) { // 每一维使用arraycopy System.arraycopy(p[i], 0, pNew[i], 0, 2); } for (int i = 0; i < pNew.length; i++) { for (int j = 0; j < pNew[i].length; j++) { System.out.print(pNew[i][j] + " "); } System.out.println(); } } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wh_chen
    • 等级:
    发表于:2008-08-08 12:53:5710楼 得分:1
    输出:
    Java code
    fh nh mm nh jj gh
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-08 15:33:0611楼 得分:1
    兄弟,还在问这个问题啊
    你那个键-值对应,使用String[][]我怎么看怎么不爽啊,
    你如果不是在学习算法,而真的是在写应用,我看你还是用集合好多了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-08 16:15:2012楼 得分:0
    是  可能是工程的接口设计问题。都需要String[][]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-09 10:32:0013楼 得分:4
    引用 12 楼 kuaileyu 的回复:
    是  可能是工程的接口设计问题。都需要String[][]


    如果设计成 String[][] 这种形式,一般来说应该意味着“只供使用,不需要修改”,否则的话,还是应该用集合。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved