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

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

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

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

Android

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

Q&A

解決済

5回答

1927閲覧

配列型のクラス変数をクラス内のメソッド内で書き換えようとするとエラーがでます。

edoooooo

総合スコア476

Java

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

Android

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

0グッド

0クリップ

投稿2017/05/03 13:32

編集2017/05/03 20:21

上のコードのように、クラス変数を宣言し、下のコードのように、クラス内のfavoriteというメソッドで書き換えを行おうとしたのですが、
usernameにエラーは出ませんが、spinnerlitems[]=には、Unexpectedtokenや、';'expected といったエラーがでます。
なぜ、配列だからエラーが出るのでしょうか?
アドバイスをいただけないでしょうか?

java

1String username="ta"; 2 String spinnerItems[]= {"GPSの現在地","新規登録/ログイン","表示画面を登録"}; 3@Override 4protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7}

//解決したコード

java

1//クラス変数 2String spinnerItems[]; 3//favoriteメソッド 4public void favorite() { 5 6 7 MyOpenHelper helper = new MyOpenHelper(LocationActivity.this); 8 SQLiteDatabase db = helper.getReadableDatabase(); 9 10 String sql = "select placename from favorite where username = '" + username + "';"; 11 12 Cursor c = db.rawQuery(sql, null); 13 int count = c.getCount(); 14 15 spinnerItems = new String[count + 4]; 16 spinnerItems[0] = "GPSの現在地"; 17 spinnerItems[1] = "新規登録/ログイン"; 18 spinnerItems[2] = "googlemapで登録"; 19 spinnerItems[3] = "表示画面を登録"; 20 21 boolean mov = c.moveToFirst(); 22 23 int mam=0; 24 while (mov) { 25 String in=c.getString(0); 26 spinnerItems[mam + 4] = in ; 27 mov = c.moveToNext(); 28 mam=mam+1; 29 } 30 c.close(); 31 db.close(); 32 } 33

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

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

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

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

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

swordone

2017/05/03 13:56

まずfavoriteメソッドはどこよ
edoooooo

2017/05/03 14:13

申し訳ありませんでした。
swordone

2017/05/03 15:01

あの、質問中にこんな大幅なコード変更やめてください。こっちが混乱します。
edoooooo

2017/05/03 15:03

最初から記述すべきでした。すみませんでした。 今回は元あったコードと別のとこに記載するように変更します。
swordone

2017/05/03 16:43

あの、何やってるんですか?細切れな修正はやめてください。
edoooooo

2017/05/03 16:51

解決済みにしたほうがよかったでしょうか?
swordone

2017/05/03 16:55

追加部分(8回目の修正「説明」)が何を説明したものなのか、そもそも何をしようとしているのか、全く分かりません。
edoooooo

2017/05/03 17:03 編集

配列は一度初期化すると、要素数を増やすことができないことへの対応としてやっていることを記入しました。
guest

回答5

0

java

1spinnerItems[]= {"GPSの現在地", "新規登録/ログイン","googlemapで検索","表示画面を登録" + str};

java

1// []不要。[]があるせいで変数の宣言か何かとみなされたのでは 2// 追加。変数宣言時以外でこの書き方をするとき、新たに型名を伴っての配列宣言が必要 3spinnerItems = new String[]{"GPSの現在地", "新規登録/ログイン","googlemapで検索","表示画面を登録" + str};

投稿2017/05/03 14:29

編集2017/05/03 14:33
swordone

総合スコア20651

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

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

edoooooo

2017/05/03 14:33

ありがとうございます。[]をとると、{""+str};にエラーが出てしまいました。 要素ごとに代入することが必要とアドバイスをいただいたので、修正してみます。 ありがとうございました。
edoooooo

2017/05/03 15:15

最初に宣言している配列の要素が3つ、つまり配列の長さが3で生成されているんです。 そこに、入れなおそうとしている要素は4つあるので、4つ目を入れることができません。 結局配列の再生成をすることになります。 ⇩ ありがとうございます。配列を使う場所で、初期化ができればいいということですね。
edoooooo

2017/05/03 20:29

解決しました。コードは記載しました。ありがとうございました。
guest

0

Unexpectedtokenの意味ってわかります?

投稿2017/05/03 14:32

toutou

総合スコア2050

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

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

edoooooo

2017/05/03 14:36

要するに意外なしるしがあります。という意味と考えております。
toutou

2017/05/03 14:39

だったらそうなんじゃないんですか?なにが疑問なの?
edoooooo

2017/05/03 14:42

余計なしるしと言われているものをとっても、違うエラーがでることです。
swordone

2017/05/03 14:46

コンパイラは万能ではありません。 とりあえず構文的に間違っているところを指摘しているだけなので、 全体をどう修正すればいいのかまでは完全にはカバーできません。
toutou

2017/05/03 14:48

その際に配列の書き方は調べましたか?
edoooooo

2017/05/03 14:49

調べました。そして実際に、favorite()のなかで、書き換えを行うまでは、エラーなく動作していました。
toutou

2017/05/03 14:54

書き換えを行うまでというのでがその書き換え方法が間違ってるとは思いませんでしたか?
edoooooo

2017/05/03 15:04

おもいました。
toutou

2017/05/03 15:14

その際何かしましたか?
edoooooo

2017/05/03 15:17

エラーを調べたり、文法的な間違いを探したり、Logで出力して、変数の中に問題がないかなどを確かめました。
toutou

2017/05/03 15:19

その結果問題はなかったですか?
edoooooo

2017/05/03 15:25

自分で調べた中では、解決策が見つからなかったので、質問をさせていただきました。 そこで、配列の初期化してる値の要素数と、代入しようとしている値の要素数が違うため、 要素を余分に確保しておく必要があるということを教わりました。 そこで、それを今回の件に当てはめて考えたところ、spinnerに使うので、から文字のボタンができると困るため、今は、文字列でクラス変数に渡して、そこから初期化をする配列に直接文字列を埋め込めないかと考えています。 自分の調べる量は不足していたかもしれません。すみませんでした。失礼します。
toutou

2017/05/03 15:36

毎回しらべかたが足りないとか言われる感じなのでそこら辺頑張って欲しいですね。注意力と根気が足らないです。
edoooooo

2017/05/03 15:38

最近は結構調べてはいるのですが、きおつけます。
guest

0

ベストアンサー

初期化時の配列の一斉代入方法は、初期化時以外では書き方が違います。

または、以下のように要素ごとに代入することが必要です。
spinnerItems[0] = なんとか
spinnerItems[1] = なんとか
spinnerItems[2] = なんとか

投稿2017/05/03 14:31

編集2017/05/03 14:32
HogeAnimalLover

総合スコア4830

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

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

edoooooo

2017/05/03 14:34

ありがとうございます。 すぐ取り掛かります。
swordone

2017/05/03 14:35

要素数が1個多いので無理だと思います。
edoooooo

2017/05/03 14:47

一個多いとは strのことでしょうか? str の説明も記述いたしました。
swordone

2017/05/03 14:57 編集

最初に宣言している配列の要素が3つ、つまり配列の長さが3で生成されているんです。 そこに、入れなおそうとしている要素は4つあるので、4つ目を入れることができません。 結局配列の再生成をすることになります。 今更だけど、自分の回答のコメントに書くべきだったなこれ
HogeAnimalLover

2017/05/03 14:59

え?ひょっとして、spinnerItems[2]の中の文字列を追加するのではなく、spinnerItems[3]なる新たなる文字列を作ろうとしています?だとするともう少し修正が必要です。予め、多めに配列要素をキープしておく(空文字列で埋めるなりする)とか、要素数の多い配列に乗せ換えることが必要です。
edoooooo

2017/05/03 15:36

ありがとうございます。 多めに配列を作る必要があったのですね。 今回作った配列を使って、動的なspinnerにセットしようと考えておりました。 から文字を使ってしまうと、から文字の項目がspinnerにできてしまうと考えています。 そこで、一度文字列に変更してクラス変数に代入してから、それを配列の初期化の場所で、配列に戻して、初期化をするという方法ができないか考えてみます。 ありがとうございました。
edoooooo

2017/05/03 20:29

解決しました。コードは記載しました。ありがとうございました。
guest

0

セミコロンが全角でコンパイルエラーでも起こしているのではないですか?

投稿2017/05/03 14:14

HogeAnimalLover

総合スコア4830

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

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

edoooooo

2017/05/03 14:24

回答をいただきましてありがとうございます。 申し訳ありません。 質問文を作成する際に、うち間違えをしてしまい、 ”となってしまっていました。 実際のコードは、 String spinnerItems[]= {"GPSの現在地","新規登録/ログイン","表示画面を登録"}; となっていました。申し訳ありませんでした。
guest

0

このコード、ダブルクォーテーションが足りていないのではないでしょうか?
関係はありますか?

Java

1 String spinnerItems[]= {"GPSの現在地","新規登録/ログイン","表示画面を登録”};

↓修正

Java

1 String spinnerItems[]= {"GPSの現在地","新規登録/ログイン","表示画面を登録"};

投稿2017/05/03 13:38

akabee

総合スコア1947

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

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

edoooooo

2017/05/03 14:24

回答をいただきましてありがとうございます。 申し訳ありません。 質問文を作成する際に、うち間違えをしてしまい、 ”となってしまっていました。 実際のコードは、 String spinnerItems[]= {"GPSの現在地","新規登録/ログイン","表示画面を登録"}; となっていました。申し訳ありませんでした。
swordone

2017/05/03 14:27

コピペしてください。 こんな質問の本質と関係ないところでいつまで時間をとっているつもりですか。
edoooooo

2017/05/03 14:30

一度、macのメモにコピペして、まとめてから、てらているにコピペしたのですが、 一部が勝手に自動変換が行われていました。きおつけます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問