我正在创建Java程序,其中一个用户希望打印出多个For循环。我正在使用随机生成的字符串在中为创建变量。用户可以选择变量的长度。我的问题是,当我尝试列出我的变量来测试这个代码工作时,当我使用listVariables()
-method时,我看不到屏幕上打印的任何内容。如果我尝试将System.out.println
放在generateVariables()
内,则新生成的字符串位于ArrayList
-vector中。代码很清楚,它将在控制台上运行,但似乎没有打印出来。捕获的地方在哪里?
这是我的代码
import java.util.Random;
import java.util.ArrayList;
import java.lang.StringBuffer;
public class Silmukkageneraattori {
//Attributes
//Change the value for how many loops you want to create?
private static final int howManyLoops = 5;
//Next string -array includes all the generated variables;
private static ArrayList<String> variables = new ArrayList<String>();
//Next value is how long variable name do you want to create?
private static final int howLongVariable = 2;
//Next method generates variables
public static void generateVariables(int how) {
String temp = null;
for (int x=0;x<how;x++) {
variables.add((String)createVariable());
}
}
//Next method creates variable
public static String createVariable() {
Random rand = new Random();
StringBuffer sb = new StringBuffer("");
String chars = "qwertyuiopasdfghjklzxcvbnm";
for (int x=0;x<howLongVariable;x++) {
sb.append(""+chars.charAt(rand.nextInt(chars.length()-1)));
}
return sb.toString();
}
//Method for listing created variables;
public static void listVariables(ArrayList<String> varB) {
for (int x=0;x>varB.size()-1;x++) {
String var = (String)varB.get(x).toString();
System.out.println(var);
}
}
//Main -method
public static void main(String[] args) {
generateVariables(howManyLoops);
listVariables(variables);
}
}
答案 0 :(得分:1)
在此方法的下面for循环中:
public static void listVariables(ArrayList<String> varB) {
for (int x=0;x>varB.size()-1;x++) {
String var = (String)varB.get(x).toString();
System.out.println(var);
}
}
您正在运行循环,直到x
小于varB.size()-1
(或直到varB.size()-1
大于x
)。
但是,varB.size()-1
不会改变循环中的大小。因此,它始终大于x
,x
将始终小于varB.size()-1
。因此,循环永远不会运行。
看起来你只想从第一个varB
获得一个元素,所以为什么不完全删除for循环而只是这样做:
System.out.println(varB.get(0));
答案 1 :(得分:0)
更改
for (int x=0;x>varB.size()-1;x++) {
至
for (int x=0;x<varB.size()-1;x++) {
请注意上面for
条件中&gt; 更改为&lt; 。
答案 2 :(得分:0)
您使用了>
条件,因此0
永远不会超过4
。所以条件要求从0到4开始。直到x将小于总varB.size()。
for (int x=0;x<varB.size()-1;x++)
而不是
for (int x=0;x>varB.size()-1;x++)
答案 3 :(得分:0)
您的问题出在 listVariables 方法中。
您使用的是&gt; (大于),而不是&lt; (小于)。
调用 listVariables 后,x为0,varB.size为某个值(5)。在测试条件下,不会输入循环,因为0不大于5.