2012-02-23 4 views
2

私はAndroid用のJavaを初めて使い慣れており、基本的にHTC携帯電話の基本的なアプリをいくつか作成しようとしています。これまでは、主にコードをコピーすることによって、「Hello、World」と書いて、乱数を印刷して画像を表示するアプリを書いてきましたが、これは私の電話機でうまく機能しています。Android用Javaでランダムクォートジェネレータを作成するにはどうすればよいですか?

私がやったことを組み合わせて、指定したリストからランダムな引用を生成して画面に印刷するアプリを書いてみたいです。リフレッシュボタンもいいでしょう。私は最初の出発点として、これらのリンクを見て

Forrst Stack Overflow

はしかし、私は私は2つを組み合わせしようとすることで、今の円に行くと思います。私は、引用符の配列を作り、乱数を生成してそれを引用符に割り当ててから、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); 
} 

}

+0

質問は何ですか? – m0skit0

答えて

3

[OK]を、最初のいくつかの基本的なもの:あなたが引用符に番号を割り当てていない、あなたがインデックスに乱数を使用しています引用配列。ことで、このようなものは、トリックを行うだろう:

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

あなたは、両方の配列のサイズを設定すると同時に、それを初期化することはできませんのでご注意ください。私。どちらかは、上記のように行うか、ような何か:あなたはどちらか

String[] quotes = new String[]{"1", "2", "3"};で配列を初期化

  • :私はあなたのコード内のエラーのカップルを見

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

または

String[] quotes = new String[3]; 
quotes[0] = "1"; 
quotes[1] = "2"; 
quotes[2] = "3"; 
  • Math.floor()とMath.random()はdoubleを返し、intを持つ配列要素にアクセスする必要があります。 intにキャストする必要があります。 random()は正の値を返すので、floor()は実際には必要ありません。
  • 存在しない配列要素にアクセスしようとすると例外が発生します。 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]); 
+0

これは素晴らしいです、ありがとうございます。これは私が最後に行ったものであり、完璧に動作しています。私はこれを基にしていくつかのアプリを開発しています。明らかに、私はJavaの基本に戻って行く必要がありますが、これは大変です:) –

+0

喜んでお手伝いください:) Btw新しいJava 7の状態: Java 7では、決して再びMathを使うべきではありません。ランダム()。 Java 7ではスレッドごとに1つの共有されていないRandomインスタンスを持つ新しいThreadLocalRandomクラスを提供しています。 Java 7を使用している場合は、これに移行することを検討する必要があります。 – Glatzial

関連する問題