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

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

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

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

Q&A

解決済

3回答

3274閲覧

Javaの数値かどうかを判断するには

kaito_fl

総合スコア38

Java

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

0グッド

0クリップ

投稿2016/02/04 08:52

編集2016/02/04 08:52

Java初心者です。
aのn乗を表示させるプログラムを作っています。

数値を入力してください

2 2

2の2乗は4です。
計算を続けますか?

というような感じにしたいと思っています。

大体の流れはできたものの、予想外の値を入力されたときにエラーになってしまうので、
数値かどうかを判断し、違う場合にメッセージを表示させたいと思います。

数値チェックする条件式をググっていろいろ試してみたのですが文法エラーでうまくいきません。
今詰まってしまっているのは太字の部分です。

どうかお力添えをお願いします。
コードは一部です。

import java.util.Scanner;
public class test4 {

public static void main(String[] args){ while(true){ System.out.println("数値を入力して下さい。"); Scanner scan = new Scanner(System.in); String a = scan.next(); String b = scan.next(); }**try{ int = Integer.numberOfLeadingZeros(10); } catch (Exception e) { System.out.println("The input is not valid as a number."); }** int answer = 1; for(int i = 0 ; i < Integer.valueOf(b).intValue() ; i++){ answer = answer *Integer.valueOf(a).intValue();

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

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

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

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

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

guest

回答3

0

ベストアンサー

ご質問のコードの文法エラーの原因は int 型の宣言に変数名の指定がないことです。
書かれているコードのレベルから見て、あなたにはこれを判断できるだけの力は十分あるはずですから、単なるケアレスミスですね。
まずは落ち着きましょう。
エラーメッセージをよく読めば判断できる類の問題です。

この後どうすればいいのかに関しては、
当該部分の変数名が無いので、その後の部分との関連がわからず、
後でどうしたいのかよくわかりません。
ですから、私にはちょっと答えようがありません。
すいません。

投稿2016/02/04 10:59

編集2016/02/04 11:08
kozuchi

総合スコア1193

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

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

kaito_fl

2016/02/05 09:08

確かに変数名が抜けていました! 変数指定したところ警告は出たもののとりあえず動かすことはできました。 ご回答ありがとうございました。
guest

0

入力された文字列が正の整数か?
冪乗を計算したら、オーバーフローしたか?
は、それぞれ別々の例外が発生します。
それを区別して catch するようにするとよいと思います。

投稿2016/02/04 10:48

katoy

総合スコア22324

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

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

kaito_fl

2016/02/05 09:10

例外の場合catchでエラーメッセージを表示するコードを入力したところとりあえず動かすことができました ご回答ありがとうございました
guest

0

一番簡単なのは、Integer.parseIntで変換してみることです。出来なければ例外を発するのでそれをcatchして、メッセージを表示するといいでしょう。
そもそも変換前にチェックしようとしても、仮に数字だけの文字列かで判断しても、その数がintの範囲外なら結局例外になります。各桁の数字をチェックしてというのも考えられますが、余りにも手間が掛かります。

ちなみに累乗を求めたいなら、 Math.powというメソッドがあります。

投稿2016/02/04 10:02

swordone

総合スコア20649

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

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

kaito_fl

2016/02/05 09:12

入力された値がそもそも文字列であって数値でないことに気づいておりませんでした… 数値に変換し判定させたところ動かすことができました。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問