Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 &引用;清晰的;ArrayList然后在不终止程序的情况下再次使用它_Java_List_Arraylist - Fatal编程技术网

Java &引用;清晰的;ArrayList然后在不终止程序的情况下再次使用它

Java &引用;清晰的;ArrayList然后在不终止程序的情况下再次使用它,java,list,arraylist,Java,List,Arraylist,我想发生的事 输入=a、b、c、d 输出=a、b、c、d 输入(无终止程序)=e、f、g、h 输出=e、f、g、h 发生了什么事 输入=a、b、c、d 输出=a、b、c、d 输入(无终止程序)=e、f、g、h output=“empty” 代码 外面 public static ArrayList<String> alpha = new ArrayList<String>(); 基本上,打印结果后 alpha.clear(); alpha = new ArrayList

我想发生的事

输入=a、b、c、d

输出=a、b、c、d

输入(无终止程序)=e、f、g、h

输出=e、f、g、h

发生了什么事

输入=a、b、c、d

输出=a、b、c、d

输入(无终止程序)=e、f、g、h

output=“empty”

代码

外面

public static ArrayList<String> alpha = new ArrayList<String>();
基本上,打印结果后

alpha.clear();
alpha = new ArrayList<String>();
alpha.clear();
alpha=新的ArrayList();
然后,我询问用户是否要输入其他文本,此时返回一个空列表。另外请注意,当我不包括.clear时,它只会重复旧的输出

编辑:

publicstaticvoidstartdfa(List-listDFA){

对于(index=0;index我不确定您的if子句,因为您的输入是a、b、c、d或e、f、g、h,并且您正在寻找大括号(&)。我在您的代码中看到的一个问题是,您增加了curly变量计数,并且在第一次运行时工作正常,因为当您第一次运行应用程序时curly=0。但是在完成第一次运行后,您的curly将大于零,或者可以说是第一次运行时可能的最大值。您应该d在如下所述的循环外部的startDFA方法的开始处重置curly=0,或者在调用startDFA之前在主方法中设置curly=0。除此之外,如果需要,您还需要与curly一起清除Q、sigma、translation、start&finish arraylist。最好的地方是在star内部执行所有重置和清除操作外循环的tDFA方法

public static void startDFA(List<String> listDFA){
   curly = 0
   for (index = 0; index<size; index++){

   }
}
publicstaticvoidstartdfa(List-listDFA){
卷曲=0

对于(index=0;index仅声明大量静态变量是糟糕的编码风格-您已经看到了发生的情况。声明一个类,将携带相关信息的变量放入字段(此处:2个列表)。声明最内部的其他变量(此处:curly)。不要声明无用的变量(此处:size,sizecurstring).使用紧凑的for语句

public class Curly {
    private List<String> q = new ArrayList<>();
    private List<String> sigma = new ArrayList<>();

    public void startDFA( List<String> listDFA){
        int curly = 0;
        for( String curr: listDFA ){
            if( curr.indexOf('{') != -1 ||
                curr.indexOf('}') != -1 ){
                curly++;
            } // maybe: else 
            if (curly <= 2){
                q.add(curr);
            } else if( curly <5 ){
                sigma.add(curr);
            }
        }
    }

    public void printVal(){
        System.out.println("The states (Q) are: ");
        System.out.println(q);
        System.out.println("The elements (Sigma) are: ");
        System.out.println(sigma);
    }
}

如果程序需要增长,请添加更多的方法(例如,
List getQ
)。避免静态。

您可以添加更多的代码吗?我认为您在获得输入时没有在第二次向列表中插入值。@Nate您忽略的内容就是问题所在。@Nate调用
x.clear()
在将新的ArrayList分配给x之前是多余的。在这两者之后,x中会有一个空列表(这里有一个细微的区别并不重要)。@Nate如果您的输入是
a、b、c、d
e、f、g、h
:为什么要计算花括号?listDFA中的字符串如何与这些输入相关(如果有的话)?请添加主要方法的内容。到目前为止,您提供的代码对您的问题没有帮助,甚至与您的问题没有关系。根据我的最佳猜测,您可能只是混淆了分配到正确的列表或从正确的列表中打印。就是这样,从未考虑过卷曲计数。谢谢!
public static void startDFA(List<String> listDFA){
   curly = 0
   for (index = 0; index<size; index++){

   }
}
public class Curly {
    private List<String> q = new ArrayList<>();
    private List<String> sigma = new ArrayList<>();

    public void startDFA( List<String> listDFA){
        int curly = 0;
        for( String curr: listDFA ){
            if( curr.indexOf('{') != -1 ||
                curr.indexOf('}') != -1 ){
                curly++;
            } // maybe: else 
            if (curly <= 2){
                q.add(curr);
            } else if( curly <5 ){
                sigma.add(curr);
            }
        }
    }

    public void printVal(){
        System.out.println("The states (Q) are: ");
        System.out.println(q);
        System.out.println("The elements (Sigma) are: ");
        System.out.println(sigma);
    }
}
    Curly curly = new Curly();
    curly.startDFA( listDFA );
    curly.printVal();