質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

793閲覧

Andorid studio 受け渡した要素分テキスト変更したい

papas1888

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2021/10/18 07:16

AndroidStudioでガチャのシミュレーションアプリを制作しています。
アクティビティー間で受けっとった配列の要素が3の場合なら3回分受けわたしてテキストを3つ表示させます。
しかし、渡す要素が1の場合にはテキストを1つしか変更しないようにしたいのですが、三回分のテキストを表示させるようにしてしまっているのでうまく表示できません。受け渡した配列分のみテキストを表示させる方法がありましたらご教示していただけないでしょうか。

public class MainActivity extends AppCompatActivity { Random random = new Random(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void resultBtn(View v){//3連ガチャ(ボタン)配列の要素をResultアクティビティーへ渡して移動 int[] reR =new int [3]; Arrays.fill(reR, random.nextInt(100));//1から100のランダムな値を要素分習得 Intent intent = new Intent(this, Result.class); intent.putExtra("result", reR); startActivity(intent); } public void resultBtn2(View v){//1連ガチャ(ボタン)配列の要素をResultアクティビティーへ渡して移動 int[] reR =new int [1]; Arrays.fill(reR, random.nextInt(100));//1から100のランダムな値を要素分習得 Intent intent = new Intent(this, Result.class); intent.putExtra("result", reR); startActivity(intent); } }
public class Result extends AppCompatActivity { private TextView date;//ガチャの結果 private TextView date2;//ガチャの結果 private TextView date3;//ガチャの結果 int n, r, s, ;//ガチャの確率の変数 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); date = findViewById(R.id.a); date2 = findViewById(R.id.b); date3 = findViewById(R.id.c); n = 45;//ノーマル r = 80;//レア s = 95;//スーパーレア gachaResult(); } public void gachaResult(){ Intent intent = getIntent(); int[] reR = intent.getIntArrayExtra("result"); if(n>reR[0]){//45%(一回目) showNetaN(date); }else if(n<=reR[0] && r>reR[0]){//35% showNetaR(date); }else if(r<=reR[0]&& s>reR[0]){//15% showNetaS(date); }else{//5% showNetaSS(date); } if(n>reR[1]){//二回目 showNetaN(date2); }else if(n<=reR[1] && r>reR[1]){ showNetaR(date2); }else if(r<=reR[1]&& s>reR[1]){ showNetaS(date2); }else{ showNetaSS(date2); } if(n>reR[2]){//三回目 showNetaN(date3); }else if(n<=reR[2] && r>reR[2]){ showNetaR(date3); }else if(r<=reR[2]&& s>reR[2]){ showNetaS(date3); }else{ showNetaSS(date3); } } public void showNetaN (TextView textView){//(ノーマル) ArrayList<String> list = new ArrayList<String>(); list.add("1(N)"); list.add("2(N)"); list.add("3(N)"); Collections.shuffle(list);// 配列の中身をシャッフル textView.setText(list.get(0));//表示 } public void showNetaR (TextView textView){//(レア) ArrayList<String> list = new ArrayList<String>(); list.add("1(R)"); list.add("2(R)"); list.add("3(R)"); Collections.shuffle(list);// 配列の中身をシャッフル textView.setText(list.get(0));//表示 } public void showNetaS (TextView textView){//(スーパーレア) ArrayList<String> list = new ArrayList<String>(); list.add("1(SR)"); list.add("2(SR)"); list.add("3(SR)"); Collections.shuffle(list);// 配列の中身をシャッフル textView.setText(list.get(0));//表示 } public void showNetaSS (TextView textView){//(最高レア) ArrayList<String> list = new ArrayList<String>(); list.add("1(SSR)"); list.add("2(SSR)"); list.add("3(SSR)"); Collections.shuffle(list);// 配列の中身をシャッフル textView.setText(list.get(0));//表示 } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2021/10/18 07:57

三連ガチャも一連(連?)ガチャも動作はしているのでしょうか。
papas1888

2021/10/18 08:11

三連ガチャの方は動作します。一連ガチャはアクティビティー変遷時に落ちてしまいます。
jimbe

2021/10/18 08:18

落ちた原因をお調べになっていますか?
papas1888

2021/10/18 08:37

if(n>reR[0]){//45%(一回目) showNetaN(date); }else if(n<=reR[0] && r>reR[0]){//35% showNetaR(date); }else if(r<=reR[0]&& s>reR[0]){//15% showNetaS(date); }else{//5% showNetaSS(date); } 2,3回目を消して1回目だけの表示なら1連ガチャでも機能していたのでおそらく、このgachaResult()を表示する際に1連ガチャだと無い要素まで含まれて無理に表示されて落ちているんだと思います。
jimbe

2021/10/18 10:11 編集

アプリが落ちる場合は logcat 等で何が起きているのかを正確に把握する必要があります。推測だけでコードを弄っても、推測が間違っていた場合は無駄になるだけです。 (ですので teratail で「アプリが落ちる」といったご質問の場合は、「ログを見てください」というコメントがまず書かれることが多いです。) まぁ、この場合は「おそらく」 > if(n>reR[1]){//二回目 の行で IndexOutOfBoundsException が発生していると思います。 java の配列はそれ自身が長さの情報を持っていますので、それ以外の範囲にアクセスしようとすると IndexOutOfBoundsException を発します。 つまり、その配列自身の長さを得られれば三連なのか一連なのかの区別を付けられることになります。 そして、配列自身の長さは length プロパティ(フィールド)で得られます。 reR であれば reR.length == 1 なら一連(使える範囲は [0] のみ)、reR.length == 3 なら三連(使える範囲は [0][1][2] まで)ということになります。
papas1888

2021/10/18 15:06

lengthで条件分岐させることで要素分のみ表示されるようになりました。logcatも次から把握しながら質問を書きます、ありがとうございました。
guest

回答1

0

自己解決

これで要素の数ごとに表示することができました。

public void gachaResult(){ Intent intent = getIntent(); int[] reR = intent.getIntArrayExtra("result"); if(reR.length == 3){//要素の数が3であれば3つ表示      if(n>reR[0]){//45%(一回目) showNetaN(date); }else if(n<=reR[0] && r>reR[0]){//35% showNetaR(date); }else if(r<=reR[0]&& s>reR[0]){//15% showNetaS(date); }else{//5% showNetaSS(date); } if(n>reR[1]){//二回目 showNetaN(date2); }else if(n<=reR[1] && r>reR[1]){ showNetaR(date2); }else if(r<=reR[1]&& s>reR[1]){ showNetaS(date2); }else{ showNetaSS(date2); } if(n>reR[2]){//三回目 showNetaN(date3); }else if(n<=reR[2] && r>reR[2]){ showNetaR(date3); }else if(r<=reR[2]&& s>reR[2]){ showNetaS(date3); }else{ showNetaSS(date3); } if(reR.length == 1){//要素の数が1であれば1つ表示   if(n>reR[0]){//45%(一回目) showNetaN(date); }else if(n<=reR[0] && r>reR[0]){//35% showNetaR(date); }else if(r<=reR[0]&& s>reR[0]){//15% showNetaS(date); } }

投稿2021/10/18 15:09

編集2021/10/18 15:11
papas1888

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問