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

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

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

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

2666閲覧

String型の変数の中身がNullになってしまう

clothblue

総合スコア16

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/08/03 00:58

編集2020/08/03 02:15

前提・実現したいこと

String型の変数に受け取った文字列を代入したいのですが中身がNullになってしまいます。
変数にstaticを使用しないようにしたくて一週間ぐらい色々試してみたのですがどうしてNullになってしまうのか分かりません。
どなたか助けて頂けると助かります。

該当のソースコード

public class MainHandler implements ActionListener { UI ui; String position;//正しく入れば使用可能、代入出来てない? String test; public MainHandler(UI userInterface) { ui = userInterface; } public void select_location(String sl) { this.position = sl;//ここが間違っている? this.test = "test";//ここが間違っている? System.out.println(sl);//ここは問題なし System.out.println(test);//ここは問題なし } public void actionPerformed(ActionEvent event) { String yourChoice = event.getActionCommand(); Atorie lc = new Atorie(ui); System.out.println(this.position);//ここがNullになってしまう System.out.println(this.test);//ここがNullになってしまう switch(this.position) {//ここがNullになってしまう case"atorie_townGate": switch(yourChoice) { case"talk":lc.atorie_TalkGuard();break; } break; case"atorie_TalkGuard": switch(yourChoice) { case"talk":lc.atorie();break; } break; } } }

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

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

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

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

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

maisumakun

2020/08/03 01:00

「select_location」はどこから実行するものでしょうか?
clothblue

2020/08/03 01:08

別パッケージのクラスから実行しております。 質問の答えになっていなかったらすみません。
maisumakun

2020/08/03 01:10

actionPerformedは、確実にselect_locationを実行したあとに実行されますか?
clothblue

2020/08/03 01:23

申し訳ないのですがプログラミングにまだ慣れていなくて流れを追って確認するのに時間がかかってしまいそうです。 一度実行順序に問題がないかしっかり確認してみたいと思います。 ご親切にありがとうございます。
swordone

2020/08/03 01:46

唐突にAtorieというのが出てきていますが、これはなんですか?
clothblue

2020/08/03 01:57

AtorieクラスでactionPerformedが実行される前に一度実行されていました。 実行結果なのですがactionPerformedが実行されるとnullになってしまうようです。 実行結果 atorie_townGate//position変数の中身 test//test変数の中身 null//position変数の中身 null//test変数の中身
clothblue

2020/08/03 02:04

Atorieクラス内にswitch以下で実行されるメソッドが書かれており、その各メソッドの中でselect_locationが実行され更新する流れになっております。
clothblue

2020/08/03 02:13

大変失礼致しました。修正致します。
Kaleidoscope

2020/08/03 03:21

>実行結果 その順番で出力されるのであれば、同じものを操作しているつもりで別のインスタンスを操作している可能性がありますね。
clothblue

2020/08/03 03:39

おっしゃって頂いた可能性が高いので確認させて頂きます。ありがとうございます。
guest

回答1

0

ベストアンサー

Atorieクラス内にswitch以下で実行されるメソッドが書かれており、その各メソッドの中でselect_locationが実行され更新する流れになっております。

でしたら、1回目にactionPerformedへ突入したときにはAtorieクラス内のメソッドは実行前ですので、this.positionthis.testは初期値のnullのままになるのが必然かと思います。

投稿2020/08/03 02:17

maisumakun

総合スコア145121

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

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

clothblue

2020/08/03 02:52

こちらactionPerformedへ入る前に別のクラスでselect_locationを一度実行しているのですが、なぜ初期値のnullになってしまうのでしょうか?。 初期化されていないから初期値のnullになってしまう事は理解いたしました。 根本的なことが分かっていないみたいでご迷惑おかけします。
maisumakun

2020/08/03 03:07

> こちらactionPerformedへ入る前に別のクラスでselect_locationを一度実行しているのですが それを先に言ってください(そんな事情を知らない上での回答です)。
clothblue

2020/08/03 03:16

すみません、頂いた質問の返事として記載させて頂いたのですが上手くお伝え出来ていなかったようです。 大変失礼致しました。以後気を付けます。
clothblue

2020/08/03 03:20 編集

度々すみません、返事の内容がとても分かりにくかったです。伝わらなくて当然でした。申し訳ないです。 厳密にはAtorieクラスとは別のクラスで一度実行しているとう事でした。
maisumakun

2020/08/03 03:22

select_locationを実行したのは、別なMainHandlerのインスタンスに対してだった、ということはありませんか?
clothblue

2020/08/03 03:34

確認致します。
clothblue

2020/08/03 05:29 編集

position変数に初期値を入れる事でnullは回避出来て問題なく動いたのですが、今度は条件分岐のためにpositionを更新することが出来なくなってしまいました。常に最初の初期値が入ってしまいす。 やはり基本が分かっていないようなので一度最初から見直してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問