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

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

新規登録して質問してみよう
ただいま回答率
85.51%
Android Studio

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

Q&A

1回答

4266閲覧

Android Studio switch構文 エラー

takeshi111

総合スコア4

Android Studio

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

0グッド

0クリップ

投稿2017/09/16 15:02

Android Studioでじゃんけんアプリを作ろうとして参考書のコード通りに書いたのですがエラーが発生して実行できません。

実行時のエラー内容
・型の開始が不正です
<identifier>がありません
・caseには親がありません

波線がかかっているところをドラッグしたときの表示
・switch → Unexpected token
・(id) → unknown case "id"
・case R.id.gu: → case statement outside switch
・break; → case statement outside switch

以下は実際のコードです
package com.example.keita.janken;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import android.widget.TextView;

public class ResultActivity extends AppCompatActivity {
final int JANKEN_GU = 0;
final int JANKEN_CHOKI = 1;
final int JANKEN_PA =2;

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); } int myHand = 0; Intent intent = getIntent(); int id = intent.getIntExtra("MY_HAND", 0); ImageView myHandImageView = (ImageView) findViewById(R.id.my_hand_image); switch (id) { case R.id.gu: myHandImageView.setImageResource(R.drawable.gu); myHand = JANKEN_GU; break; case R.id.choki: myHandImageView.setImageResource(R.drawable.choki); myHand = JANKEN_CHOKI; break; case R.id.pa: myHandImageView.setImageResource(R.drawable.pa); myHand = JANKEN_PA; break; default: myHand = JANKEN_GU; break; }

}

MainActivityのコードも以下に載せておきます
package com.example.keita.janken;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onJanKenButtonTapped(View view) { Intent intent = new Intent(this, ResultActivity.class); intent.putExtra("MY_HAND", view.getId()); startActivity(intent); }

}

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

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

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

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

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

guest

回答1

0

onCreateメソッドが4行で終わっています。そのため、int myHand = 0;からフィールド宣言の場所になっています。クラス内のブロックに囲まれていない場所はフィールド宣言およびその初期化しかできず、switch文などは使用できません。

java

1package com.example.keita.janken; 2 3import android.content.Intent; 4import android.os.Bundle; 5import android.support.v7.app.AppCompatActivity; 6import android.widget.ImageView; 7import android.widget.TextView; 8 9public class ResultActivity extends AppCompatActivity { 10 final int JANKEN_GU = 0; 11 final int JANKEN_CHOKI = 1; 12 final int JANKEN_PA =2; 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_result); 18 } 19 20 // ここからメソッド外のため、フィールド宣言および初期化しかできない場所 21 int myHand = 0; 22 Intent intent = getIntent(); 23 int id = intent.getIntExtra("MY_HAND", 0); 24 ImageView myHandImageView = (ImageView) findViewById(R.id.my_hand_image); 25 // その場所にこのような「処理」を書くことは不可能 26 switch (id) { 27 case R.id.gu: 28 myHandImageView.setImageResource(R.drawable.gu); 29 myHand = JANKEN_GU; 30 break; 31 case R.id.choki: 32 myHandImageView.setImageResource(R.drawable.choki); 33 myHand = JANKEN_CHOKI; 34 break; 35 case R.id.pa: 36 myHandImageView.setImageResource(R.drawable.pa); 37 myHand = JANKEN_PA; 38 break; 39 default: 40 myHand = JANKEN_GU; 41 break; 42 } 43}

投稿2017/09/16 15:22

編集2017/09/16 15:32
swordone

総合スコア20649

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

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

takeshi111

2017/09/16 15:39

無事解決できました。迅速な回答誠にありがとうございます。
swordone

2017/09/16 15:45

というかこれ前回の全く同じ質問にも書きました。そちらに全くアクションがないのはなぜですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問