使用随机字符串创建变量 - 屏幕上将不显示任何内容

时间:2016-04-29 10:38:03

标签: java loops variables

我正在创建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);
    }

}

4 个答案:

答案 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不会改变循环中的大小。因此,它始终大于xx将始终小于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.