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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

3回答

2174閲覧

入力内容に応じたエラーメッセージ表示をしたい

kskok

総合スコア7

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2016/10/29 05:30

###前提・実現したいこと
・Androidアプリを開発したく、Webサイト(リンク)を見ながら見よう見まねでプログラミングをしています。
・プログラミングツールはAndroid Studioを使用しています。
・一旦HPの内容までは完成できたので、ここから「人数や金額が”1以上の数字”以外」の場合は計算させずに入力を正しくするよう注意喚起する方法を教えていただきたい。

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

java.lang.NumberFormatException: Invalid int: ""

###該当のソースコード

java

1 2package com.example.splitthecost; 3 4import android.os.Bundle; 5import android.app.Activity; 6import android.view.Menu; 7import android.view.View; 8import android.widget.Button; 9import android.widget.EditText; 10import android.widget.TextView; 11 12public class MainActivity extends Activity { 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 19 Button btn = (Button)findViewById(R.id.btnCalc); 20 btn.setOnClickListener(new View.OnClickListener() { 21 public void onClick(View v) { 22 // オブジェクトを取得 23 EditText etxtNum = (EditText)findViewById(R.id.eTxtNum); 24 EditText etxtMoney = (EditText)findViewById(R.id.eTxtMoney); 25 TextView txtResult = (TextView)findViewById(R.id.txtResult); 26 27 // 入力内容を取得 28 String strNum = etxtNum.getText().toString(); 29 String strMoney = etxtMoney.getText().toString(); 30 31 // 数値に変換 32 int num = Integer.parseInt(strNum); 33 int money = Integer.parseInt(strMoney); 34 35 // 割り勘計算 36 int result = money / num; 37 38 // 結果表示用テキストに設定 39 txtResult.setText(Integer.toString(result)); 40 41 } 42 }); 43 } 44 45 @Override 46 public boolean onCreateOptionsMenu(Menu menu) { 47 // Inflate the menu; this adds items to the action bar if it is present. 48 getMenuInflater().inflate(R.menu.main, menu); 49 return true; 50 } 51 52}

###試したこと
・onClickメソッド内にif関数でstrNumやnumの条件を指定し(例:if(num == "") や if(!(num >= 1) )、条件分岐をしてみたりしましたが、いずれも人数をブランクにするとエラーメッセージが表示され、エラーを回避できませんでした。

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

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

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

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

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

guest

回答3

0

数字じゃない文字列を数字に変換しようとするから怒られているんです。
numやmoneyを検査しても意味がありません。
strNumやstrMoneyが数字かどうかを検査してください。

投稿2016/10/29 05:44

yona

総合スコア18155

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

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

0

自己解決

こちらの照会をもとに、数字かどうかをチェックするメソッドを定義し、if関数で場合分けすることで解決しました。

投稿2016/10/29 14:11

kskok

総合スコア7

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

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

yona

2016/10/29 14:19

ifは関数じゃないです。
guest

0

コードの誤りについてはyonaさんがおっしゃるとおりですが、質問者さんにすべきアドバイスはむしろ「いかにエラーの原因を正しく把握するか」だと思います。今回は例外が発生したケースですので・・・

  1. 例外が発生したら何を表す例外なのか少なくとも気にしましょう
  2. その例外がプログラムのどこで発生したか調べる方法を早く知りましょう
  3. リファレンスを見ましょう(parseIntとかの)

これら学ばないままでは問題の原因に到達する一番確実で早い方法をみすみす放棄することになってしまいます。ぜひこれらを学んでください。

投稿2016/10/29 09:36

KSwordOfHaste

総合スコア18394

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問