使用Beanshell脚本生成序列号

3

我是一名初学Beanshell脚本的人。我正在尝试生成连续的数字,我尝试的脚本代码如下:

文件名:sequence.bsh

string = new String();
Long[] n = new Long[] {1000};
for (i=0; i < n; i++){
    sequence = String.format("%08d", i);
    System.out.println(sequence);
}

当我尝试运行这段代码时,我得到以下错误: 评估错误:源文件: sequence.bsh : 操作符:'"<"'不适用于对象: 在第3行: 在文件: sequence.bsh: ; 在编译的java程序中,上述代码行像预期的那样工作,我获得了从00000001到00009999生成的序列。
我需要知道如何纠正这个操作符错误,并将结果分配给一个变量,以便我可以在JMeter测试用例中使用它,类似于vars.put("VARNAME", i.toString());
提前感谢。
4个回答

4

Beanshell并不是非常符合Java的规范,我认为你需要使用DecimalFormat类来代替String.format()方法。

import java.text.DecimalFormat;

DecimalFormat df = new DecimalFormat( "00000000" );

int  n = 1000;

for (int i=0;i<n;i++)
{
    String sequence = df.format(i);
    System.out.println(sequence);
}

有一个不错的Beanshell脚本指南可以帮助很多人。


5
您可以使用String.format(String format, Object... args)方法,但需要将参数args传递一个数组而不是单个对象:String.format("hello %s", new Object[]{"world"}); - Jonas

0

n是一个数组,你不应该使用<来比较数组。但是为什么要使用数组呢?根据你发布的代码目的,你并不需要它。你可以尝试将其改为Long类型。

string = new String();
Long n = 1000;
for (i=0; i < n; i++){
    sequence = String.format("%08d", i);
    System.out.println(i);
}

2
最初我尝试了类似的代码,但在编译过程中仍然存在相同的错误。方法调用中的错误:静态方法格式(java.lang.String 我使用的是Java 1.6。为什么Beanshell解释器无法读取String.format()方法? - Rocky
@Rocky - 我不是很清楚为什么它不起作用。但使用String.format("%08d", new Object[]{i})可以解决问题 :) - icyerasor

0

更改

for (i=0; i < n; i++){

for (i=0; i < n.length; i++){

您正在尝试比较一个整数 i 和一个 Long 类型的数组。


他似乎不想遍历数组中的每个元素。 - holap
1
是的,你们说得对。我忽略了那个问题。我添加 Long[] 的原因是为了避免早先出现的错误。评估错误: 来源文件: sequence.bsh : 方法调用出错: 类'java.lang.String'中找不到静态方法format(java.lang.String, int) :在第4行: 在文件:sequence.bsh: String.format("%08d", i)现在在添加 n.length 后我得到了相同的错误。我使用的是 Java 1.6 版本。为什么 BeanShell 解释器无法读取 String.format() 方法? - Rocky

0

另外,您还可以使用JMeter函数:__counter,每次调用时都会生成一个新的数字,从1开始递增。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接