Java 根据参数输入减少或增加循环
我有一个ArrayList,其中包含大小为1000的字符串。我在那个数组列表中循环寻找单词,并试图从中形成一个正方形。例如: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
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循环的问题,这取决于平方大小。