首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

看看这个函数的有关问题

2012-02-20 
看看这个函数的问题Java codepublic static String deleSubSet() {char[] parent {0,1,2,3,4,

看看这个函数的问题

Java code
public static String deleSubSet() {        char[] parent = {'0','1','2','3','4','5','6','7','8','9'};            Arrays.sort(parent);                char[] subSet = {'6','3','4',};                Arrays.sort(subSet);        StringBuffer sb = new StringBuffer();        for (int i = 0, k = 0; i < parent.length; i++) {            if (parent[i] == subSet[k]) {                k++;                            } else {                sb.append(parent[i]);            }        }        return sb.toString();    }


作用:将parent中,包含subSet的元素删除,然后返回被删除后的parent

看这个代码有什么问题。

[解决办法]
Java code
for (int i = 0, k = 0; i < parent.length; i++) {            if (k<subSet.length && i<parent.length && parent[i] == subSet[k]) {                k++;            } else {                sb.append(parent[i]);            }        }
[解决办法]
你的问题在于会把k值增加到大于subSet的范围,引发异常,1楼加上了判断处理,就避免了这个问题,不过1楼if里的i<parent.length这个就没有必要了。
[解决办法]

[解决办法]
Java code
import java.util.*;public class Del{    public static void main(String[] args) {                char[] parent = {'0','1','2','3','4','5','6','7','8','9'};            Arrays.sort(parent);                char[] subSet = {'6','3','4',};                Arrays.sort(subSet);        StringBuffer sb = new StringBuffer();        for (int i = 0, k = 0; i < parent.length; i++) {            if (k<subSet.length && parent[i] == subSet[k]) {                k++;                            } else {                sb.append(parent[i]);            }        }        System.out.println(sb);        //return sb.toString();    }}
[解决办法]
用API更简单
Java code
    public static String deleSubSet() {        Character[] parent = {'0','1','2','3','4','5','6','7','8','9'};               Character[] subSet = {'6','3','4',};        ArrayList<Character> pArrayList = new ArrayList<Character>();        ArrayList<Character> sArrayList = new ArrayList<Character>();        pArrayList.addAll(Arrays.asList(parent));        sArrayList.addAll(Arrays.asList(subSet));        pArrayList.removeAll(sArrayList);        return pArrayList.toString();    }
[解决办法]
探讨

Java code

import java.util.*;

public class Del
{
public static void main(String[] args) {

char[] parent = {'0','1','2','3','4','5','6','7','8','9'};

Arrays.sort(p……

热点排行