Java 根据参数输入减少或增加循环

Java 根据参数输入减少或增加循环,java,Java,我有一个ArrayList,其中包含大小为1000的字符串。我在那个数组列表中循环寻找单词,并试图从中形成一个正方形。例如: C A R D A R E A R E A R D A R T 这是可行的,但它涉及很多嵌套循环,我正在硬编码循环在这个例子中,我试图形成一个正方形4x4 我期待有灵活性,通过在广场大小,例如5x5或6x6等,并相应地循环。我该怎么做呢 如果这只是一个单循环,我将只传入一个整数,并根据该整数进行循环。但由于我正在嵌套,所以所需的For循环的数量会有所不同 当我形成一个4

我有一个ArrayList,其中包含大小为1000的字符串。我在那个数组列表中循环寻找单词,并试图从中形成一个正方形。例如:

C A R D
A R E A
R E A R
D A R T
这是可行的,但它涉及很多嵌套循环,我正在硬编码循环在这个例子中,我试图形成一个正方形4x4

我期待有灵活性,通过在广场大小,例如5x5或6x6等,并相应地循环。我该怎么做呢

如果这只是一个单循环,我将只传入一个整数,并根据该整数进行循环。但由于我正在嵌套,所以所需的For循环的数量会有所不同

当我形成一个4x4的正方形时,我会循环4次,每个循环检查不同的子字符串以得到一个正确的正方形。当需要5x5时,我需要5个循环来进行检查。我的意思是要解决这样一个问题,即根据参数增加减少循环,或者在不创建太多For循环的情况下创建循环的方法。请给我一些指导

void makeWord(ArrayList<String> arr, int size){ //want to use this size to determine amount of loop

    String first, second, third, fourth;
    for (int i = 0; i < arr.size(); i++) {

        first = arr.get(i);

        for (int j = 0; j < arr.size(); j++) {
            if(first.substring(1,2).equals(arr.get(j).substring(0,1)) &&
                    (!first.equals(arr.get(j)))){
                second = arr.get(j);
            }
            else {
                second = "    ";
            }

            if (!second.trim().isEmpty()) {
                for (int k = 0; k < arr.size(); k++) {
                    if (first.substring(2, 3).equals(arr.get(k).substring(0, 1)) &&
                            second.substring(2, 3).equals(arr.get(k).substring(1, 2)) &&
                            (!first.equals(arr.get(k)) && (!second.equals(arr.get(k))))) {
                        third = arr.get(k);
                    } else {
                        third = "    ";
                    }


                }
            }
        }
    }
}
void makeWord(ArrayList arr,int size){//要使用此大小来确定循环量吗
第一,第二,第三,第四串;
对于(int i=0;i
我不能完全确定你的问题是否正确,但是如果你想找到一种方法使你的代码更灵活,这样你就可以构建任意大小的正方形,那么你的主要问题是你存储字符串的方式

由于循环取决于定义的字符串数量,因此可以通过硬编码字符串变量来限制自己。 或者,您可以简单地将文本存储在数组矩阵中,如下所示:

String[][] matrix = new String[size][size];

这允许您构建任意大小的正方形,而且您不再需要所有这些
substring()
调用,这可能也会提高性能

我不能完全确定您的问题是否正确,但是如果您正在寻找一种使代码更灵活的方法,以便可以构建任意大小的正方形,那么您的主要问题是存储字符串的方式

由于循环取决于定义的字符串数量,因此可以通过硬编码字符串变量来限制自己。 或者,您可以简单地将文本存储在数组矩阵中,如下所示:

String[][] matrix = new String[size][size];

这允许您构建任意大小的正方形,而且您不再需要所有这些
substring()
调用,这可能也会提高性能

我认为以下截取的代码解决了您的问题:

public static void printSqaure(List<String> list, int size){
    for(int i=0; i< list.size(); i++){
        if(i <= size){
            String subStr = list.get(i).substring(0, size);
            System.out.println(subStr);
        }

    }
}
publicstaticvoidprintsqaure(列表,整数大小){
对于(int i=0;i如果(i我认为以下代码可以解决您的问题:

public static void printSqaure(List<String> list, int size){
    for(int i=0; i< list.size(); i++){
        if(i <= size){
            String subStr = list.get(i).substring(0, size);
            System.out.println(subStr);
        }

    }
}
publicstaticvoidprintsqaure(列表,整数大小){
对于(int i=0;i如果(我不确定嵌套for循环是如何阻止传递整数的。也许可以尝试去掉不相关的细节,把问题集中在实现逻辑的目的上-wise@ArtemioRamirez编辑了问题。删除正在执行的检查只会引发更多关于这些循环的意义的问题。中断问题出现了;一种方法是找到单词,另一种方法是显示它们。我感觉你想要的答案很简单(减少或增加循环不是一件难事)我似乎无法理解您试图实现的逻辑。循环中的代码似乎与我无关,您想要的是以某种方式执行循环。@ElliottFrisch即使我将这两个循环分开,当找到单词时,我仍然会遇到多个for循环的问题,这取决于平方大小。不确定如何执行sting for循环会阻止你传递一个整数。也许可以试着去掉不相关的细节,把你的问题集中在你要完成的逻辑上-wise@ArtemioRamirez编辑了问题。删除正在执行的检查只会开始进一步询问这些循环的意义。将问题分解;打开我觉得你想要的答案很简单(减少或增加循环不是一件难事)我似乎无法理解您试图实现的逻辑。循环中的代码似乎与我无关,您想要的是以某种方式执行循环。@ElliottFrisch即使我将这两个循环分开,当我找到单词“不”时,我仍然会遇到多个for循环的问题,这取决于平方大小。