🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Q&A

解決済

2回答

759閲覧

Java 数字の有無を確認したい

YukimasaYajima

総合スコア10

Java

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

0グッド

0クリップ

投稿2019/10/08 18:22

ユーザーインプットの中に数字、大文字が少なくとも1つ入っているかを確かめるプログラミングが目標です。

具体的に、もしユーザー入力、"pass"の文字列どこかにに、数字が無い場合、特定のメッセージを表示させる。有る場合は表示は無し、その場を抜けて次に移る。
これと同じことを大文字かどうかでも行います。

今の状態だと、文字のすべてが数字、大文字でなければ、trueになりません。

もし他にも改善できる場所があれば教えてもらえれば幸いです。

パスワードチェッカーみたいな物を目指して作っています。
汚いコードですがアドバイスお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

そもそも現状のコードではresultフラグに全く触れていないため、いかなる文字列を入れようともresultはtrueのままループを抜けます。またループの結果がどうであろうとメッセージの表示の行は必ず通るため、たとえ条件を満たす文字列であろうとメッセージが表示されます。

まず、条件をちゃんと考えましょう。
通したい条件は「数字が少なくとも1つあり、かつ大文字が少なくとも1つある」です。
では、「そうではない」条件はどうなるでしょう?

数字についての判定と大文字についての判定を分けるとわかりやすくなるのではないでしょうか。

投稿2019/10/08 18:48

swordone

総合スコア20669

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

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

0

もっとも短く書くことはできますが、入門的に書いてみました。

java

1package teratail; 2 3import java.util.Scanner; 4 5public class HelloWorld { 6 public static void main(String[] args) { 7 Scanner scanner = new Scanner(System.in); 8 while (true) { 9 System.out.print("入力してください > "); 10 String input_text = scanner.nextLine(); 11 String err_message = check_text(input_text); 12 if (err_message == null) { 13 break; 14 } 15 System.out.println(err_message); 16 } 17 } 18 19 static String check_text(String text) { 20 String message = null; 21 boolean has_digit = check_digit(text); 22 boolean has_upper = check_upper(text); 23 if (!has_digit && !has_upper) { 24 message = "ERROR: 数字と大文字を含めてください"; 25 } else if (!has_digit) { 26 message = "ERROR: 数字を含めてください"; 27 } else if (!has_upper) { 28 message = "ERROR: 大文字を含めてください"; 29 } 30 return message; 31 } 32 33 static boolean check_digit(String str) { 34 for (char c : str.toCharArray()) { 35 if (Character.isDigit(c)) { 36 return true; 37 } 38 } 39 return false; 40 } 41 42 static boolean check_upper(String str) { 43 for (char c : str.toCharArray()) { 44 if (Character.isUpperCase(c)) { 45 return true; 46 } 47 } 48 return false; 49 } 50}

投稿2019/10/08 22:25

katoy

総合スコア22324

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

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

YukimasaYajima

2019/10/09 21:13

解決できました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問