• ベストアンサー

数字の判定

初めまして、ver_51 と言います。今、文字列に入っている中身が数字でなければエラーを出すプログラムを作りたいと考えています。 例えば String a; があるとすると、a が "123" であればエラーを出さないが、"abc" や "あいうえお" や "123"(全角) であればエラーを出すといった感じです。 下記の if 文の条件をどのようにしたらよいでしょうか。 if(a.equals(ここの条件)) System.out.println("エラー"); JavaScript のテキストから入力された場合だと以下のような感じになると思うのですが、Java の文字列でこの様なことを実現するのは無理でしょうか? <SCRIPT LANGUAGE="JavaScript"> function check(){ var a=document.~.value; if(a.search(/[^0-9]/)>=0){ alert("エラー"); return false; } } </SCRIPT> 初歩的な質問だと思いますが、すごく困っています。 回答していただけたらすごく助かります。宜しくお願いします。

  • Java
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • isi0611
  • ベストアンサー率34% (46/134)
回答No.1

こんばんは~(^^♪ javaではチェックしてくれるメソッドはないと思うので自分で作るしかないかもしれないですね。 import java.io.*; public class Check { public static void main(String[] args){ boolean flg = false; String a = "123"; byte[] bytes = a.getBytes(); // 123の場合もあるので半角チェック if( a.length() == bytes.length ) { try{ // 数字に変換できるか? Long.parseLong(a); flg = true; }catch(Exception e){ } } if (!flg) { System.out.println("エラー"); } } } こんな感じでどうでしょう? もっといいやり方があるのかも知れませんが。。。 では~(^o^)丿

ver_51
質問者

お礼

isi0611様、さっそく回答していただき、ありがとうございます。 やはりこの様なメソッドはないのですか・・・残念です。 今回自分のプログラムにisi0611様からいただいたアドバイスを活かすことができ、やろうとしていたことが実現しました! 本当にありがとうございます、助かりました。またご縁があれば宜しくお願いします。

その他の回答 (1)

回答No.2

正規表現を使ってチェックするには、という質問だと理解しました。こんな感じで。 public class test { /** * @param args */ public static void main(String[] args) { check("123"); check("123.1"); check("11h55"); check(""); check("k"); check("3"); check("0"); } static void check(String a) { if (a.matches("[0-9]+")) { System.out.println("OK"); } else { System.out.println("NG"); } } }

ver_51
質問者

お礼

arakororin様、迅速な回答ありがとうございます。 正規表現を使ってもできるんですね、すごく参考になりました。プログラムはisi0611様から先に回答があったので、そちらを使わせていただきました。 しかし正規表現もすごくイイ勉強になりました、感謝しております。本当にありがとうございました。またご縁があれば宜しくお願いします。

関連するQ&A

  • javascriptでの正規表現について

    javascript正規表現にて正の整数および小数(半角のみ) を判別したいのですがうまくいきません。どうすればいいのでしょうか。<script language=javascript> function StrCheck(strSrc){ var value = strSrc.value; if (value.match(/[0-999]+¥.[0-99]/)==true){ alert("半角数字のみで入力して下さい"); } </script> ); 以上のようにつくってみましたが、半角でも全角でも「半角を入力してください」というメッセージがでてしまいます。これを全角のみでエラー表示がでるようにしたいのですがどうしたらよいのでしょうか。参考になるWEBページでもあれば教えてください。ご教授の程よろしくお願い申し上げます。

  • PHPの文字列変数をJavaScriptのalertで表示させたい

    <?php  $mes = 123; print<<<EOF  <script Language="JavaScript">  <!--   JavaScript:alert( $mes );  //-->  </script> EOF; ?> ↑のコードを実行すると123というメッセージボックスが表示されます。 <?php  $mes = "aaa"; print<<<EOF  <script Language="JavaScript">  <!--   JavaScript:alert( $mes );  //-->  </script> EOF; ?> しかしこのように数値変数でははく文字列変数を渡すと表示できません。 JavaScriptにPHPの文字列変数を受け渡すことはできるのでしょうか?

    • ベストアンサー
    • PHP
  • phpでのjavaSの記述方法

    下記の条件の時phpで if (strlen($ken3) and strlen($ken4) > 0) { ”<script Language="JavaScript"><!-- alert("警告"); // --></script>”; } 警告ウィンドウを表示したいのですが、 Parse error: syntax error, unexpected となります。 また、変数で $javas = "<head> <title>警告ウィンドウを表示する</title> <script Language="JavaScript"><!-- alert("警告"); // --></script> </head>";と記述してもParse errorとなります。 警告ウィンドウの記述方法は?

    • 締切済み
    • PHP
  • javascriptで、下記のコードをFireFoxで実行した際にd(

    javascriptで、下記のコードをFireFoxで実行した際にd("input")の行でエラーが出てしまいます。 <script language="javascript"> var a=window.alert; alert(a); a("test"); var d=document.createElement; alert(d); d("input"); </script> なぜ、window.alert関数はa変数に代入して実行できるのに、document.createElementはd変数に代入しても実行できないのでしょうか。 d変数をalertすると[native code]とアラートされるので、関数を d に代入出来てはいそうなのですが。 ちなみにFireFox3.5.11で発生した現象です。

  • obj.property のundefined判定

    obj.property のundefined判定 未定義のローカル変数を評価すると、以下の結果になります。 <script type="text/javascript"><!-- var a; if(a === undefined){ alert('a is undefined!'); } // エラーは発生しない if(b === undefined){ alert('b is undefined!'); } // 「ReferenceError: b is not defined」のエラーが発生し、if文が評価されない if('undefined' === typeof b){ alert('b is undefined!'); } // エラーは発生しない //--></script> 未定義のローカル変数は undefined との比較ではチェックできず、typeof でチェックする必要があることが分かります。 対して、「存在が保証されているオブジェクトの存在しないプロパティ」でチェックすると、以下の結果になります。 <script type="text/javascript"><!-- var obj = { a:'valueA', b:'valueB' }; if(obj.property === undefined){ alert('obj.property is undefined!'); } // エラーは発生しない if('undefined' === typeof obj.property){ alert('obj.property is undefined!'); } // エラーは発生しない //--></script> 不思議に思い、ECMA-262 3rd Edition仕様書を読んでみたところ、下記文言が見つかりました。 ---------- 8.6.2.1 [[Get]] (P) O の [[Get]] メソッドがプロパティ名 P で呼出されると、次のステップがとられる: 1. O が P という名前のプロパティを持っていなければ、ステップ 4 へ進む。 2. そのプロパティの値を取得する。 3. Result(2) を返す。 4. O の [[Prototype]] が null ならば、undefined を返す。 5. [[Prototype]] の [[Get]] メソッドを、プロパティ名 P で呼び出す。 6. Result(5) を返す。 http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/8_Types.html#section-8.6.2 ---------- この場合、ステップ4の「obj.property が nullなため undefined を返す」という処理が行われた、という解釈で合っているでしょうか? ほぼ正しいと感じているのですが、「仕様書の中で見るべきところが合っているのか」に自信が持てず、確信に至っていません…。

  • javascriptに詳しい方

    下のスクリプトで見るべきページが二つ以上ある場合どのように記述すればいいのでしょうか? javascriptに詳しい方よろしくお願いいたします。 <html> <head> <script language="JavaScript"> <!-- var isClicked = false; //--> </script> </head> <body> <A href="check.html" onClick="isClicked = true">見るべきページ</a><br> <A href="test.html" onClick="if (!isClicked){ alert('先に見るべきページをクリックしてください'); return false; }">A</a><br> </body> </html>

  • javasccriptの文字列の連結について

    javasccriptの文字列の連結について charAt()というメソッドを用いて、 以下のサンプル <html> <head> <title>for sample</title> </head> <body> <script type="text/javascript"> <!-- str ="javascript" var ch1=str.charAt(0); alert("[" + ch1 +"]") //--> </script> </body> <html> を実行した際に アラートで[j]と返ってくるのですが、 (1)alert("[" + ch1 +"]")の部分を (2)alert("[ + ch1 +]") とした場合は[+ ch1 +]が返ってきます。 また、 (2)alert(["+ ch1 +"]) とした場合には+ ch1 +が返ってきます。 javascriptの中でダブルクォーテーションで 囲われた部分は文字列になると認識しているのですが、 なぜ、 (1)alert("[" + ch1 +"]")の場合は アラートで[j]と返ってくるのでしょうか? ダブルクォーテーションを二回使用しているので そもそもエラーになりそうな気がするのですが・・。 もしよろしければ、ご指導お願い致します。

  • readyStateが4にならない原因

    apache2でAjaxの試しとして下記スクリプトだけのhtmlファイル(http://localhost/newfile.html)を 作り動作を確認してみました(空白部分は全角になっています)。すると最後の部分の alert("Error: readyState code is " + request.readyState);で 2→アラートのOKを押す→一瞬1になり3→アラートのOKを押す→一瞬1になり0→アラートのOKを押すと1になりました。そしてコンソールには ------------------------------------------------ GET http://localhost/a.php 200 OK 60ms Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) request.send(url); ------------------------------------------------ といったエラー表示がでてしまいます。 また、request.openで渡すURLの「http://localhost/a.php」を「a.php」にすると、 一瞬1になり2→アラートのOKを押す→一瞬1になり0→アラートのOKを押すと1 になります。なぜ4にならないのでしょうか。 request.statusは全部0になっているようです。 <script language="javascript" type="text/javascript"> var request = false; try {   request = new XMLHttpRequest(); } catch (trymicrosoft) {   try {     request = new ActiveXObject("Msxml2.XMLHTTP");   } catch (othermicrosoft) {     try {       request = new ActiveXObject("Microsoft.XMLHTTP");     } catch (failed) {       request = false;     }   } } if (!request)   alert("Error initializing XMLHttpRequest!"); window.onload = getCustomerInfo; function getCustomerInfo() { var url = "test"; request.open("GET", "http://localhost/a.php", true); request.onreadystatechange = updatePage; request.send(url); } function updatePage() { if (request.readyState == 4){ if(request.status == 200){     var response = request.responseText;          document.write(response); }else  if (request.status == 404){   alert("Request URL does not exist");      }else{      alert("Error: status code is " + request.status); } }else{   alert("Error: readyState code is " + request.readyState); } } </script>

    • ベストアンサー
    • AJAX
  • .  <HTMLについて>  よろしくお願いします  

    ページに入ったときと出て行くときにアラート表示させるHTMLソースです。これをhead区間内に貼り付けてもうまく表示されません。何故でしょうか・・・ <SCRIPT LANGUAGE="JavaScript"> <!-- function Pagein(){ alert("いらっしゃいませ"); } //--> </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> <!-- function Pageout(){ alert("ありがとうございました"); } //--> </SCRIPT> よろしくお願いいたします。

  • プログラムで論理エラーがあったので、そこでスクリプトを止めたいのですが

    プログラムで論理エラーがあったので、そこでスクリプトを止めたいのですが、 Javascriptでは exit;というものが無いため、処理を止めることができません。 スクリプトを止める一番スマートな方法が知りたいです。 if (a == 1) { alert("通過"); // ここでスクリプトを止めたい。 } また、tryを使うと、catchでエラー表示して、そこで止めたい場合もあるのですが こちらもスクリプトを止める良い方法を探しています。 try { ... } catch (e) { alert("エラーです。"); // ここで止めたい。 }