如何在视图类中创建 1 到 100 范围内的数字数组

问题描述 投票:0回答:2

大家请帮帮我!

我想以形状显示一组数字。

我做了什么

1)我在 View 类中用画布绘制了一个形状。

2)我创建一个随机数。

3)我搜索了很多,发现应该使用 Drawtext 来显示文本或数字。

4)我读过Random、Drawtext等的文档

5)我尝试过 for 循环,但它在画布类之外和内部不起作用,也会无限次重复该单个数字。

我的问题

我不知道如何将该数字放入数组中以及如何在视图类中使用绘图文本显示数组。

目前,我只能显示一个随机数,但我想显示一组随机数。

我是 Android 新手,而且我的英语不太好。 如果有人能帮助我解决这个问题,我将非常感激。

谢谢你。

这是我用于创建单个随机数的代码部分(这是在类、构造函数和 onDraw 方法之外):

Random rand = new Random();
        int number = rand.nextInt(100) + 1;
        String mystring = String.valueOf(number);

& 在 onDraw 方法中显示这个数字我使用了下面的代码:

@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);
canvas.drawText(mystring,130,480,black_paintbrushstroke);
}
android arrays canvas random drawtext
2个回答
1
投票

请尝试使用

ArrayList
来保存您的随机数据,例如:

ArrayList<Integer> arrayList = new ArrayList<>(100); 
Random r = new Random(System.currentTimeMillis());
for(int i = 0; i < 100; i++) {
    arrayList.add(r.nextInt());
}

然后:

@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    int yOffset = 10;
    int yStartPosition = 480;
    for (int i = 0; i < arrayList.size(); i++) {
        Integer integer = arrayList.get(i);
        canvas.drawText(String.valueOf(integer), 130, yStartPosition+(i*yOffset), black_paintbrushstroke);
    }
}

看起来您正在将所有项目绘制到同一位置(x,y),您需要添加一些垂直偏移以在前一个值下方绘制新值。

如果您想将所有数字绘制为逗号分隔的字符串,则需要使用 StringBuilder 将数组转换为字符串:

StringBuilder sb = new StringBuilder();
for(int i = 0; i < arrayList.size(); i++) {
    sb.append(arrayList.get(i)).append(",");
}

String myRandomNumbersArray = sb.toString();
sb.setLength(0);

0
投票

我用: IntStream.rangeClosed(0, 100).boxed().collect(Collectors.toList())

对于前: 列表测试= IntStream.rangeClosed(0, 100).boxed().collect(Collectors.toList());

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.