Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法将Object[]数组转换为char[]数组? 类解决方案{ char[]make(字符串s){ Stack st=新堆栈(); for(char c:s.toCharArray()){ 如果(c!='#'){ 圣普什(c); } 如果(!st.isEmpty()){ 圣普(); } } 返回(char[])(st.toArray()); } 公共布尔backspaceCompare(字符串S、字符串T){ char[]ch1=制造; char[]ch2=制造(T); int i,j; 如果(ch1.length!=ch2.length) 返回false; 否则{ 对于(i=0;i_Java_Arrays_Object - Fatal编程技术网

Java 有没有办法将Object[]数组转换为char[]数组? 类解决方案{ char[]make(字符串s){ Stack st=新堆栈(); for(char c:s.toCharArray()){ 如果(c!='#'){ 圣普什(c); } 如果(!st.isEmpty()){ 圣普(); } } 返回(char[])(st.toArray()); } 公共布尔backspaceCompare(字符串S、字符串T){ char[]ch1=制造; char[]ch2=制造(T); int i,j; 如果(ch1.length!=ch2.length) 返回false; 否则{ 对于(i=0;i

Java 有没有办法将Object[]数组转换为char[]数组? 类解决方案{ char[]make(字符串s){ Stack st=新堆栈(); for(char c:s.toCharArray()){ 如果(c!='#'){ 圣普什(c); } 如果(!st.isEmpty()){ 圣普(); } } 返回(char[])(st.toArray()); } 公共布尔backspaceCompare(字符串S、字符串T){ char[]ch1=制造; char[]ch2=制造(T); int i,j; 如果(ch1.length!=ch2.length) 返回false; 否则{ 对于(i=0;i,java,arrays,object,Java,Arrays,Object,嗯,如果必须,很容易编程: class Solution { char[] make(String s){ Stack<Character> st= new Stack<Character>(); for(char c:s.toCharArray()){ if(c!='#'){ st.push(c); } else if(!st.

嗯,如果必须,很容易编程:

class Solution {
    char[] make(String s){
        Stack<Character> st= new Stack<Character>();
        for(char c:s.toCharArray()){
            if(c!='#'){
                st.push(c);
            }
            else if(!st.isEmpty()){
                st.pop();
            }
        }
        return (char [])(st.toArray());
    }
    public boolean backspaceCompare(String S, String T) {
        char[] ch1=make(S);
        char[] ch2=make(T);
        int i,j;
        if(ch1.length!=ch2.length)
            return false;
        else{
            for(i=0;i<ch1.length;i++){
                if(ch1[i]!=ch2[i]){
                    return false;
                }
            }
        }
        return true;
    }
}
Character[]refArray=(Character[])st.toArray();
char[]charArray=新字符[refArray.length];
for(int i=0;i

请注意,可能更喜欢指定的集合,可能是围绕
StringBuilder
或类似的东西构建的集合(如果您有许多字符)。毕竟,使用每个字符的引用是相当浪费的(但是,是的,现在的计算机).

如果使用
字符
,则只能使用
T[]toArray(T[]a)
覆盖

返回一个数组,该数组包含 顺序正确;返回数组的运行时类型是 指定的数组

Character[]make(字符串s){
Stack st=新堆栈();
//...
返回st.toArray(新字符[st.size()]);
}
公共布尔backspaceCompare(字符串S、字符串T){
字符[]ch1=品牌;
字符[]ch2=制造(T);
//...
}

No,您应该将返回类型切换为Character[]或Object[]或手动复制数组。您可以尝试以下操作:
String stringArray[]=Arrays.stream(objArray).toArray(String[]::new);
Character[] refArray = (Character[]) st.toArray();
char[] charArray = new char[refArray.length];
for (int i = 0; i < refArray.length; i++) {
    charArray[i] = refArray[i];
}
return charArray;
Character[] make(String s){
    Stack<Character> st = new Stack<Character>();
    //...
    return st.toArray(new Character[st.size()]);
}

public boolean backspaceCompare(String S, String T) {
    Character[] ch1 = make(S);
    Character[] ch2 = make(T);
    //...
}