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

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

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

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

Q&A

解決済

2回答

1604閲覧

パスワード確認方法について

Teratail....

総合スコア3

Java

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

0グッド

0クリップ

投稿2021/04/02 15:23

編集2021/04/02 23:26

今まで正規表現しか使ったことがないのですが、ASCIIコードを使ってパスワードの確認をしたいです。自分でも調べてみたのですが、ほとんどが正規表現でASCIIコードを使っている参考になるようなものが見つかりませんでした。

そのパスワードの中に数字とアルファベット大文字が含まれているかを調べたいです。
どちらかひとつだけの確認ならできたのですが、複数のことが確認できません。

どちらのifも同じ文字iを使っていて一つの文字が数字でありアルファベットでもあるはずがないのでfalseになるのかなと思っているのですが、passwordの中に数字もあり、アルファベット大文字も含んでいるかと調べるにはどうしたら良いのでしょうか。

java

1public boolean passwordCheck(){ 2//例 3String password = "a1aa11A"; 4 for(int i=0; i<password.length(); i++){ 5 if(password.charAt(i)>=48 && password..charAt(i)<=57){ 6 if(password.charAt(i)>=65&& password..charAt(i)<=90){ 7 return true; 8 }else{ 9 return false; 10 } 11 }else{ 12 return false; 13 } 14 } 15}

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

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

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

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

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

m.ts10806

2021/04/02 22:02

>orループとcharAt(i)を使えば良いかなと考えているのですが まず書いてみては。 エラーが出るだけで復旧不可能な問題が起きることってないですよ。
Teratail....

2021/04/02 22:22

そうですよね。 色々試していたらできました、、。
Teratail....

2021/04/02 22:49

数字だけの確認の場合、 if(password.charAt(i)>=48 && password.charAt(i)<=57) { return true; }else{ return false; } でうまくいったのですが、 数字とアルファベット大文字を含むか知りたい時、 if(password.charAt(i)>=48 && password..charAt(i)<=57) {   if(password.charAt(i)>=65&& password..charAt(i)<=90){ return true; }else{ return false; } }else{ return false; } にすると、うまくいきません。 追加回答よろしくお願いします。
m.ts10806

2021/04/02 22:55

質問は編集できますので、状況を追記してください。 「うまくいかない」ではなく、起きている現象も追記してくださいね。
dodox86

2021/04/03 00:38

パスワード文字列の検証と言うと、「それらの文字が含まれているか」と言うよりは、「それらの文字”以外”が含まれているか」または「それらの文字”のみ”で構成されているか」検証になるかと思いますがどうでしょうか。
dodox86

2021/04/03 02:30

まぁ、あと、ご提示のコードでは"alaaa11A"のすべての文字をチェックするまでもなく、最初の1文字のみでreturnしてしまうのではないかと。 > そのパスワードの中に数字とアルファベット大文字が含まれているかを調べたいです。 含まれてさえいれば良ければ含まれていると判断した時点でreturnしてしまって良いのですけど、文字列中の文字全てがそうか、そうでないかを判定したいのであれば、プログラム全体を見直す必要があります。
Teratail....

2021/04/03 15:08

回答ありがとうございます。全体を変えることにしました。
guest

回答2

0

ベストアンサー

提示されているコード(2021/04/03 08:26時点)では、
最初の1文字で、trueかfalseを返してしまい。2文字目以降をチェックしません。
※eclipseだと、i++の部分にデッドコード(到達不能コード)の警告がつきます。

returnするのでなく、フラグを使って管理してください。

そのパスワードの中に数字とアルファベット大文字が含まれているかを調べたいです。

含まれているかのチェックであれば、上記フラグを2つ用意して
2つともtrueであればreturnするというふうにすればよいです。

java

1String password = "a1aa11A"; 2boolean isNum = false; 3boolean isAlp = false; 4for(char c : password.toCharArray()) { 5 if('0' <= c && c <= '9') isNum = true; 6 if('A' <= c && c <= 'Z') isAlp = true; 7 8 if(isNum && isAlp) return true; 9} 10 11return false;

投稿2021/04/03 06:27

momon-ga

総合スコア4826

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

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

momon-ga

2021/04/03 06:30

あ、提示されてるコードは、コンパイルエラーですね・・・
Teratail....

2021/04/03 15:07

回答ありがとうございます。とても助かりました。
guest

0

Java

1public bool passwordCheck(){ 2//例 3String password = "a1aa11"; 4 for(int i=0; i<password.length(); i++){ 5 if(password.charAt(i) >= '0' && 6 password.charAt(i) <= '9') 7 return true; 8 } 9 return false; 10} 11

投稿2021/04/02 15:57

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問