【问题标题】:How do I write a random quote generator in Java for Android?如何在 Java 中为 Android 编写随机报价生成器?
【发布时间】:2012-03-13 20:58:04
【问题描述】:

我对 Java for Android 非常陌生,基本上只是一个尝试为 HTC 手机制作一些基本应用程序的菜鸟。到目前为止,主要是通过复制代码,我编写了可以写“Hello, World”、打印随机数和显示图片的应用程序,这些应用程序在我的手机上运行良好。

我现在想结合我所做的并编写一个应用程序,该应用程序将从指定列表中生成随机报价并将其打印在屏幕上。刷新按钮也不错。

我首先查看了这些链接作为起点: Forrst Stack Overflow

但是,我想我现在正在尝试将两者结合起来。我首先制作一个引号数组,生成一个随机数并将其分配给引号,然后尝试获取 tv.setText 方法来编写它。

感谢您的任何帮助!谢谢!

这是我目前所拥有的:

package com.Me;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import java.util.Random;

public class QuoteActivity extends Activity {

int numQuotes = 10;
String[] quotes = new String[numQuotes] {"John", "Mary", "Bob"};
String randomQuote = quotes[Math.floor(Math.random() * numQuotes)];

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Make a new text view passing Activity object
    TextView tv = new TextView(this);
    //Set a text into view

    tv.setText(randomQuote);
    //set the view into activity view container
    setContentView(tv);
}

}

【问题讨论】:

    标签: android string random


    【解决方案1】:

    好的,首先是一些基本的东西:您没有为引号分配数字,而是使用随机数来索引引号数组。话虽如此,这样的事情就可以解决问题:

    String[] quotes = new String[] {"q1", "q2", "q3"};
    String randomQuote = quotes[(int) (Math.random() * quotes.length)];
    

    请注意,您不能同时设置数组的大小和初始化它。 IE。要么你喜欢上面,要么你做类似的事情:

    int numQuotes = 3;
    String[] quotes = new String[numQuotes];
    quotes[0] = "q1";
    quotes[1] = "q2";
    quotes[2] = "q3";
    

    【讨论】:

      【解决方案2】:

      我在您的代码中发现了几个错误:

      • 您可以通过

      • 来初始化一个数组

      String[] quotes = new String[]{"1", "2", "3"};

      String[] quotes = new String[3];
      quotes[0] = "1";
      quotes[1] = "2";
      quotes[2] = "3";
      
      • Math.floor() 和 Math.random() 返回双精度,您应该使用整数访问数组元素。您应该转换为 int。您实际上并不需要 floor(),因为 random() 返回正值。
      • 如果您尝试访问一个不存在的数组元素,您将遇到异常。如果您有包含 3 个元素的数组并且 math.random()*10 给您 4 - 您将崩溃。

      我建议:

      int randomElemenetIndex = (int) (Math.random() * 10) % 3; //This way you will have 0, 1 or 2
      ...
      tv.setText(quotes[randomElementIndex]);
      

      【讨论】:

      • 这太棒了,谢谢。这是我最后使用的那个,它工作得很好。在此基础上,我可以制作许多应用程序。显然,无论如何我都需要回归 Java 的基础,但与此同时,这很棒:)
      • 很高兴为您提供帮助 :) 顺便说一句,新的 Java 7 声明:从 Java 7 开始,我们不应该再使用 Math.random()。 Java 7 为我们提供了一个新的 ThreadLocalRandom 类,每个线程有一个非共享的 Random 实例。所以如果你使用 Java 7,你应该考虑迁移到这个。
      猜你喜欢
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 2019-10-13
      • 2020-07-24
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多