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

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

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

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

Android

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

Android Studio

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

解決済

assetsフォルダのテキストファイルを読み込み、任意の部分だけを表示させたい

Yamade
Yamade

総合スコア3

Java

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

Android

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

Android Studio

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

1回答

0評価

0クリップ

311閲覧

投稿2022/01/05 05:56

編集2022/01/16 01:58

assetsフォルダのテキストファイルを読み込み、任意の部分だけを表示させたい

初心者ですが、はじめてここで質問させていただきます。
現在Android Studioを使い、言語はJavaでアプリ開発の練習を進めています。
作成中のアプリはassetsフォルダのなかに作成した、いくつかの国・都市名とそれぞれに割り当てられた4桁の番号が記されたテキストファイルを読み込み、アプリ画面にて4桁の番号を検索にかけることで、該当する国・都市名のみを表示させるというものです。

テキストファイルの読み込みや、検索番号を入力するところまではできているのですが、入力した番号とテキストファイル内の番号が一致していても一致していないことになるため悩んでいます。
助言をいただきたいですよろしくお願いします。

発生している問題・エラーメッセージ

2022-01-05 14:33:37.739 10566-10566/com.example.sampleMeibo I/System.out: 9999 2022-01-05 14:33:37.739 10566-10566/com.example.sampleMeibo I/System.out: 1064,America,ニューヨーク 2022-01-05 14:33:37.739 10566-10566/com.example.sampleMeibo I/System.out: 1099,China,上海 2022-01-05 14:33:37.739 10566-10566/com.example.sampleMeibo I/System.out: 0068,UK,ロンドン 2022-01-05 14:33:37.739 10566-10566/com.example.sampleMeibo I/System.out: 9999,Russia,モスクワ 2022-01-05 14:33:37.739 10566-10566/com.example.sampleMeibo I/System.out: 一致していません

該当のソースコード

package com.example.sampleMeibo; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); InputStream is = null; BufferedReader br = null; String text = ""; //TextView2の処理 try { try { // assetsフォルダ内のcord.txtを開く is = this.getAssets().open("test1/cord.txt"); br = new BufferedReader(new InputStreamReader(is)); //1行単位で読み込む String str; while ((str = br.readLine()) != null) text += (str + "\n"); } finally { if (is != null) is.close(); if (br != null) br.close(); } } catch (Exception e) { //エラー発生時に前のアクティビティに戻る finish(); } //textをTextView2に表示 TextView textView2 = findViewById(R.id.textView2); textView2.setText(text); //終了ボタンを押した際の処理 Button button2 = findViewById(R.id.button2); button2.setOnClickListener(view -> finishAndRemoveTask()); //検索ボタンを押した際の処理 Button button = findViewById(R.id.button); String finalText = text; button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //text1に保存されたコードをtextViewに表示 EditText editText = findViewById(R.id.editText); String text1 = editText.getText().toString(); TextView textView = findViewById(R.id.textView); TextView textView3 = findViewById(R.id.textView3); textView.setText(text1); System.out.println(text1); System.out.println(finalText); //コードと4桁の番号が一致したとき、該当する行を表示 if (text1 == finalText) { System.out.println("一致しました"); textView3.setText(finalText); } else { System.out.println("一致していません"); textView3.setText("一致していません"); } } }); } } //cord.txtの内容 1064,America,ニューヨーク 1099,China,上海 0068,UK,ロンドン 9999,Russia,モスクワ

試したこと

テキストファイルを読み込むのではなく、SQLiteのようなデータベースを利用したものも調べていくうちにたどり着いだのですが、まだ初心者ということもあり可能であればこのままのやり方で考えています。
しかしそもそも実現不可能なものであればほかのやり方を提示していただけると助かります。

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

ここにより詳細な情報を記載してください。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

jimbe

2022/01/05 06:12 編集

まず java での文字列の比較の仕方につきまして、お調べになっては如何でしょうか。
jimbe

2022/01/05 11:10 編集

本件に SQLite が関係無いのでしたら、 SQLite のタグは外されたほうが良いと思います。 ついでに言えば、「入力した番号とテキストファイル内の番号が一致していても一致していないことになる」のは元データがテキストファイルだとか SQLite だとかは関係ありません。
Yamade

2022/01/05 12:38

ありがとうございます! Javaはequalsメソッドを使う必要があるのですね タグは修正させていただきます。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

Android

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

Android Studio

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