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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Q&A

解決済

1回答

4974閲覧

データクラスにsetしたはずのデータがgetできない

intenseG

総合スコア34

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

0グッド

0クリップ

投稿2016/12/25 05:51

編集2016/12/25 08:01

###前提・実現したいこと

囲碁問題を出題するandroidアプリを開発中なのですが、データクラスの扱い方で躓いたので質問させて頂きます。

データクラスには3つのint型変数を宣言しており、他クラスからコンストラクタを使って格納しています。
流れとしては以下のようになっています。

問題表示画面に関するクラス(Problem.class)から、問題データを1問ごとのデータに分解するクラス(GoDataParse.class)のコンストラクタを使って渡す。

GoDataParseクラスで分解したデータをGoDataParseクラス内で、データクラス(Zahyo.class)のコンストラクタを使って渡す。

Zahyoクラスに格納したデータをProblemクラスからgetterを使って呼び出す。

しかし、何もデータが格納されていない。

###発生している問題

コンストラクタを使ってデータを格納したはずが、getterで呼び出せない状況です。

###該当のソースコード
Problem.class

Java

1@Override 2 protected void onCreate(@Nullable Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.problem_screen); 5 6 board = new Board(); 7 zahyo = new Zahyo(); 8 9 Intent intent = getIntent(); 10 String number = intent.getStringExtra("number"); 11 String level = intent.getStringExtra("level"); 12 String goDataP = intent.getStringExtra("goDataP"); 13 String goDataA = intent.getStringExtra("goDataA"); 14 15 gdp = new GoDataParse(goDataP, goDataA); 16 17 board.initStone(zahyo.getStoneColorP(), zahyo.getColP(), zahyo.getRowP()); 18 19 //以下省略

GoDataParse.class

Java

1 private Zahyo zahyo; 2 3 public GoDataParse(String goDataP, String goDataA) { 4 5 splitZahyoP(goDataP); 6 splitZahyoA(goDataA); 7 } 8 9 private void splitZahyoP(String goDataP) { 10 11 if("黒なら"){ 12 //分解処理は長いので省略 13 initStoneP(zahyoP, BLACK); 14 } 15 if("白なら"){ 16 //分解処理は長いので省略 17 initStoneP(zahyoP, WHITE); 18 } 19 } 20 21 private void splitZahyoA(String goDataA) { 22 23 if("黒なら"){ 24 //分解処理は長いので省略 25 initStoneA(zahyoA, BLACK); 26 } 27 if("白なら"){ 28 //分解処理は長いので省略 29 initStoneA(zahyoA, WHITE); 30 } 31 } 32 33 private void initStoneP(String zahyoP, int stoneColorP) { 34 //ここでデータクラスのコンストラクタにデータを渡す 35 zahyo = new Zahyo(stoneColorP, intChanger(zahyoP.charAt(0)), intChanger(zahyoP.charAt(1))); 36 } 37 38 private void initStoneA(String zahyoA, int stoneColorA) { 39 //ここでデータクラスのコンストラクタにデータを渡す 40 zahyo = new Zahyo(stoneColorA, intChanger(zahyoA.charAt(0)), intChanger(zahyoA.charAt(1))); 41 }

Zahyo.class

Java

1 private int colP; 2 private int rowP; 3 private int stoneColorP; 4 private int colA; 5 private int rowA; 6 private int stoneColorA; 7 8 public Zahyo() { 9 10 } 11 12 public Zahyo(int stoneColor, int col, int row) { 13 this.stoneColorP = stoneColor; 14 this.colP = col; 15 this.rowP = row; 16 } 17 18 //getterとsetterがここに入る

###試したこと

コンストラクタではなく、setterでデータを格納するのも試してみましたがダメでした。

###補足情報(言語/FW/ツール等のバージョンなど)

言語:Java
開発環境:AndroidStudio2.2.3
プログラミング歴:5ヶ月

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

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

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

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

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

swordone

2016/12/25 07:25

「intentでデータを受け取る」とは何でしょう?
intenseG

2016/12/25 08:02

他クラスからputExtraでProblemクラスに送ったデータを受け取る、といった意味で書いたつもりでした。すみません。
guest

回答1

0

ベストアンサー

Problem内の変数zahyoとGoDataPerse内の変数zahyoは別物です。
GoDataPerseから結果をProblemに戻してないので、Problemのzahyoが初期値から変わりません。

投稿2016/12/25 08:19

swordone

総合スコア20651

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

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

intenseG

2016/12/25 10:35

なるほど・・・! 的確な指摘、非常に助かります。 連続しての質問で申し訳ないのですが、GoDataParseクラスからProblemクラスに「zahyo」を戻す方法についてご教授頂けないでしょうか? 自分なりに考えてやってみたものの、良い方法を見つけられませんでした。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問