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

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

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

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

Q&A

1回答

2023閲覧

順番にボタンをタップ

dec

総合スコア7

Java

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

0グッド

0クリップ

投稿2015/11/10 14:39

ボタンを1から9まで順番に押すプログラムを書きたいのですが、下記のコードでcheckAnswerの中身をどう書いていいのか分からず、ずっと考えたのですが答えが出ないので是非、力を貸していただけませんか。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;

public class Main2Activity extends AppCompatActivity {

private ArrayList<String[]> quizSet = new ArrayList<String[]>(); private TextView timeText; private TextView levelText; private Button button1_1; private Button button1_2; private Button button1_3; private Button button1_4; private Button button1_5; private Button button1_6; private Button button1_7; private Button button1_8; private Button button1_9; private boolean firstAnswer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); loadQuizSet(); getViews(); setQuiz(); } private void setQuiz() { firstAnswer = true; ArrayList<String> answers = new ArrayList<String>(); for(int i=0; i<=8; i++) { answers.add(quizSet.get(0)[i]); } Collections.shuffle(answers); button1_1.setText(answers.get(0)); button1_2.setText(answers.get(1)); button1_3.setText(answers.get(2)); button1_4.setText(answers.get(3)); button1_5.setText(answers.get(4)); button1_6.setText(answers.get(5)); button1_7.setText(answers.get(6)); button1_8.setText(answers.get(7)); button1_9.setText(answers.get(8)); } public void checkAnswer(View view) { // answer? Button clickedButton = (Button) view; String clickedAnswer = clickedButton.getText().toString(); // judge if (clickedAnswer.equals(quizSet.get(0)[0])) { clickedButton.setText(clickedAnswer); if(firstAnswer); } else { clickedButton.setText(clickedAnswer); firstAnswer = false; } // button button1_1.setEnabled(false); button1_2.setEnabled(true); button1_3.setEnabled(true); button1_4.setEnabled(true); button1_5.setEnabled(true); button1_6.setEnabled(true); button1_7.setEnabled(true); button1_8.setEnabled(true); button1_9.setEnabled(true); } private void getViews() { timeText = (TextView) findViewById(R.id.time); levelText = (TextView) findViewById(R.id.count); button1_1 = (Button) findViewById(R.id.button1_1); button1_2 = (Button) findViewById(R.id.button1_2); button1_3 = (Button) findViewById(R.id.button1_3); button1_4 = (Button) findViewById(R.id.button1_4); button1_5 = (Button) findViewById(R.id.button1_5); button1_6 = (Button) findViewById(R.id.button1_6); button1_7 = (Button) findViewById(R.id.button1_7); button1_8 = (Button) findViewById(R.id.button1_8); button1_9 = (Button) findViewById(R.id.button1_9); } private void loadQuizSet() { InputStream inputStream = null; BufferedReader bufferedReader = null; try { inputStream = getAssets().open("quiz1.txt"); bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String s; while ((s = bufferedReader.readLine()) != null) { quizSet.add(s.split("\t")); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (inputStream != null) inputStream.close(); if (bufferedReader != null) bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } }

}

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

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

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

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

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

ikuwow

2015/11/10 23:48

長いコードはMarkdown記法でシンタックスハイライトしていただけますでしょうか?
guest

回答1

0

1:ボタンを全て配列に入れる
2:ボタン配列をfor文で回す
3:ボタンのenable属性を判定する
4:最初に現れたenable属性がtrueのボタンをfalseに設定し、breakする。

投稿2015/11/10 14:59

yona

総合スコア18155

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

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

dec

2015/11/10 15:10

ありがとうございま,す。 1と2は下記の書き方で良いのでしょうか? String[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8}; for(int i = 0; i < a.length; i++{ } すいません。3と4がいまいちピンときていません。
yona

2015/11/10 15:20

1:Buttonの配列です。button1_1等を入れます。この時にボタンを無効化します。 2:合ってます 3:Button#isEnabledを使う 4:Button#setEnabledを使う
dec

2015/11/10 15:42

1:に書かれてるボタンを無効化にするってことは、button1_1.setEnabled(false);ってことですか? それを配列にする? 勉強させていただいてるのに恐縮なのですがコードで教えていただくことか可能でしょうか? まだまだ素人で何度も質問を繰り返してしまいそうなので、コードを見て勉強させていただければ助かります。 失礼を承知でよろしくお願い致します。
yona

2015/11/10 16:22

1-a:ボタンを全て無効化する 1-b:Buttonを配列に入れる これでわかりますか? 言葉で書いてあることをコードにできないと、ずっと初心者・素人のままですよ。 また、teratailは一つの質問にたいして議論できるようにチャット形式をとっているんだと思っています。失礼ではないです。 もし、「議論なんか必要ない、コードだけあればいいんだ」と言うなら私は回答をやめると思います。
dec

2015/11/10 16:40

そうですね。議論してどんどん覚えたいです。1人で色々書けるようになりたいです。 是非、議論させてください。 1-a: // ボタンを無効化する button1_1.setEnabled(false); button1_2.setEnabled(false); button1_3.setEnabled(false); button1_4.setEnabled(false); button1_5.setEnabled(false); button1_6.setEnabled(false); button1_7.setEnabled(false); button1_8.setEnabled(false); button1_9.setEnabled(false); 1-b: // buttonを配列に入れる String[] a = {button1_1, button1_2, button1_3, button1_4, button1_5, button1_6, button1_7, button1_8, button1_9}; こういうことでしょうか?
yona

2015/11/10 23:39

1-aは合っています。ですが、button1_1だけは最初から押せるようにしないといけないので、trueにすべきでしょう。 1-bはButtonの配列を作るので左辺は Button[] buttonsですね。
dec

2015/11/11 08:55

ありがとうございます。 // ボタンを無効化する button1_1.setEnabled(true); button1_2.setEnabled(false); button1_3.setEnabled(false); button1_4.setEnabled(false); button1_5.setEnabled(false); button1_6.setEnabled(false); button1_7.setEnabled(false); button1_8.setEnabled(false); button1_9.setEnabled(false); // buttonを配列に入れる Button[] buttons = {button1_1, button1_2, button1_3, button1_4, button1_5, button1_6, button1_7, button1_8, button1_9}; // ボタン配列をfor文で回す for(int i = 0; i < buttons.length; i++) { // ボタンのenable属性を判定する buttons[i] = } ここまでは合っていますか? この後のButton#isEnabledを使うがネット検索したのですが分かりませんでした。 for文の中にButton#isEnabledを入れるのですよね? どのように入れればよろしいのでしょうか?
yona

2015/11/11 13:18

・配列に入れるのと、無効化するのはonCreateに入れましょう。 ・button[i].isEnabled()をif文で判定します。
dec

2015/11/12 01:05

1と2をonCreateに入れるのですか? そのまま下記のように入れましたが、これではおかしいですよね? うーん もう少し考えてみます。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); loadQuizSet(); getViews(); setQuiz(); button1_1.setEnabled(true); button1_2.setEnabled(false); button1_3.setEnabled(false); button1_4.setEnabled(false); button1_5.setEnabled(false); button1_6.setEnabled(false); button1_7.setEnabled(false); button1_8.setEnabled(false); button1_9.setEnabled(false); Button[] buttons = {button1_1, button1_2, button1_3, button1_4, button1_5, button1_6, button1_7, button1_8, button1_9}; }
yona

2015/11/12 01:27

重要なのことは問題を読み込んだ時に一度だけ行うということなので、条件に合っている箇所ならどこでもいいですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問