• ベストアンサー

入力された文字がIPアドレスかのチェック

コンソール画面から入力をする方法を調べた所、以下のようにすればよいことが解かりました。 BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String a = input.readLine(); IPアドレスを入力したいので、IPアドレス以外の形式で入力された場合に エラーを表示して再入力をさせるようにしたいです。 入力された文字列がIPアドレスかどうかのチェックをどのようにすればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

小数点で分割したい場合には String[] b = a.split("\\."); としてください。

debukawa
質問者

お礼

皆様回答ありがとうございます. 皆様のアドバイスのおかげで問題を解決することが 出来ました. ありがとうございました.

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

InetAddress.getByName(a); を実行したときに例外が投げられるかどうかをチェックするのがお手軽だと思います。

参考URL:
http://java.sun.com/javase/ja/6/docs/ja/api/java/net/InetAddress.html#getByName%28java.lang.String%29
全文を見る
すると、全ての回答が全文表示されます。
  • kyonn2008
  • ベストアンサー率22% (4/18)
回答No.1

1.splitメソッドを使用し、"."で分ける。 2.分けた配列の長さが4以外であればエラー 3.分けた配列のそれぞれの要素が数値変換できなければエラー 4.分けた配列のそれぞれの要素が0~255の範囲内になければエラー ※ただしIPv4に限る。 を順にやれ。

debukawa
質問者

お礼

回答ありがとうございます。 splitメソッドを使って試してみました。 String[] b = a.split("."); というようにして分割させようとしてみましたが,うまく分割しません。 String[] b = a.split(":"); としたところうまく分割してくれました。 .で分割させたいのですがなぜか上手くいきません。 原因が分からないのですがご存知でしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • BufferedReader.readline()で読み込んだ文字列の

    BufferedReader.readline()で読み込んだ文字列の長さがおかしい。 質問させてください。 BufferedReader.readline()を使用して入力した文字列の長さを表示させると、値が正しく表示されません。 例えば、「東京都千代田区」と入力した場合、長さは9と表示されます。 (東京都と入力すると長さは3と表示されます) どなたか原因をご存知ありませんでしょうか。 コードを以下に記載します。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Question_1_1 { /* * メイン関数 * @param args 起動引数 */ static public void main(String[] args) throws IOException{ InputStreamReader input = new InputStreamReader(System.in); BufferedReader buff = new BufferedReader(input); String str = ""; System.out.println("文字列入力>"); str = buff.readLine(); System.out.println("文字列長さ : " + str.length()); // ストリームを閉じる input.close(); buff.close(); } }

    • ベストアンサー
    • Java
  • 画面出力の際の繰り返しと入力文字チェック

    いつもお世話になっております。 System.out.println("数字を入力してください"); InputStreamReader reader = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(reader); String str = br.readLine(); int res = Integer.parseInt(str); と記述して画面に出力させた場合、数字以外を入力するとエラーになりますが、入力文字のチェックが可能な方法をご存知の方お願いします。 もうひとつ、作業が終わった後も"数字を入力してください"と繰り返すプログラムについてもご教授ください。 いつも簡単な質問で申し訳ありません・・。一応逆引き辞典で調べてはいるのですが。。

    • ベストアンサー
    • Java
  • キーボードから文字列を入力する際の質問です。

    キーボードから文字列を入力する際の質問です。 どうしてもカタカナでしか日本語の入力が出来ません。 ローマ字入力です。 import java.io.*; class Sample4 { public static void main(String args[]) throws IOException { System.out.println("文字列を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); System.out.println(str + "が入力されました。"); } }

    • ベストアンサー
    • Java
  • if文で

    String[]s = new String[1]; s[1] = "1";の1と BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String a = br.readLine();で入力した1は比較できますか?

    • ベストアンサー
    • Java
  • 下記のようなjavaのプログラムで、* や / を入力しても,

    下記のようなjavaのプログラムで、* や / を入力しても, 必ず判定がfalseのほうになるんですけど、どうすれば良いですか? あまりjavaには詳しくないので、分かりやすく教えていただければ幸いです。お願いします。 import java.io.*; public class test{ public static void main(String[] args) throws IOException{ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String a; a = input.readLine(); if((a == "*") ^ (a == "/")){ System.out.println("OK"); }else{ System.out.println("エラー"); } } }

    • ベストアンサー
    • Java
  • doubleで入力するには?

    はじめまして。 Javaの勉強をはじめたばかりです。 質問のしかたが正しいのかもちょっと自信がないのですが、 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); っていうのがありますよね? これの『int』のところを『double』で入力できるように するにはどうすればいいのでしょうか? すごい初心者な質問で申し訳ないですが、よろしくお願いします。

    • ベストアンサー
    • Java
  • このクラスをもとに…。

    import java.lang.*; import java.io.*; import java.util.*; class SimpleReader{ public static void main(String[] argv) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s; System.out.print("Input: "); System.out.flush(); s = br.readLine(); } } このクラスをもとにプロンプト「Input: 」を出力して、文字列を入力させ、その文字列をそのまま出力しつづけ、「end」と入力すると終わるプログラムを教えてください。

  • このクラスをもとに2

    import java.lang.*; import java.io.*; import java.util.*; class SimpleReader{ public static void main(String[] argv) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s; System.out.print("Input: "); System.out.flush(); s = br.readLine(); } } このクラスをもとにプロンプト「Input: 」を出力して、文字列を入力させ、その文字列を反転(例えば"abc"→"cba")させて出力しつづけ、「end」と入力すると終わるプログラムを教えてください。

    • ベストアンサー
    • Java
  • このクラスをもとに改。

    import java.lang.*; import java.io.*; import java.util.*; class SimpleReader{ public static void main(String[] argv) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s; System.out.print("Input: "); System.out.flush(); s = br.readLine(); } } このクラスをもとにプロンプト「Input: 」を出力して、文字列を入力させ、その文字列をそのまま出力しつづけ、「end」と入力すると終わるプログラムを教えてください。例えば Input: abc abc Input: def def Input: end みたいな感じで。。

    • ベストアンサー
    • Java
  • 入出力について

    下記のソースコードで、2点不明な点がありますので ご教授お願い致します。 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class ab3{ public static void main(String args[]){ BufferedReader myReader = new BufferedReader( new InputStreamReader(System.in)); try{ System.out.println("名前を入力してください"); String myString = myReader.readLine(); System.out.println(myString + "さん、こんにちわ!"); }catch(IOException e) { } } } 1. BufferedReader myReader = new BufferedReader( new InputStreamReader(System.in)); ここのソースコードについてですが、 new BufferedReader(new InputStreamReader ^^^ ^^^ (System.in)); 「new」が二つもついていますが、何故二つも つける必要があるのでしょうか。 一つであっても問題はないと思われ、 2番目の「new」を取り除くと、エラーが表示されて しまいます。 また、上記ソースコードを BufferedReader myReader ; myReader = InputStreamReader(System.in)); と分割して書こうとしてもエラーが表示されてしまいます。 2. String myString = myReader.readLine(); ここの部分ですが、これはString型のインスタンス(コンストラクタ?)を 作っていると思われますが、この部分を String myString ; myString = myReader.readLine(); または、 String myString = new myReader.readLine(); としてたら、エラーが表示されてしまいます。 JAVAを初めて間もなく、質問の内容がわかりづらいと 思われます。入出力について理解するのに苦労して おりますが、何卒ご教授の程お願い致します。

    • ベストアンサー
    • Java