javaの課題です。
アルファベットの文字には、穴のある文字が幾つか存在します。
例えば、A,B,D,O,P,Q,R,a,b,d,e,g,o,p,qなどがそうです。
アルファベットで構成された文字列を受け取ったら、その文字列中にある穴の数の総和を求め、返すプログラムを作成してください。
注意点として、「B」には穴が2つある.
<問題の制約>
プロジェクト名:「AlphabetHoleCounter」
メインクラス名:「jp.ac.ait.oop1.k00000.AlphabetHoleCounter」
処理を記述するメソッド名:「count」
public static int count(String s)
mainメソッドには、動作確認のためのコード(任意)を書いてください。
さっぱりわかりません。教えて下さい
引数で渡された文字列のアルファベットに含まれる穴の数を算出するプログラム
Re: 引数で渡された文字列のアルファベットに含まれる穴の数を算出するプログラム
2週間前のトピックで申し訳ありませんが、訂正です。
int c = s.charAt(i); の int を char にします。
int でも動くはずですが、charAt は char を返しますから。
結局、この質問者は何も返事してきませんでした。
これぐらい書いてほしかった。
switch文にする手もあります。
indexOf を使うと短く書けます。
長いので 2行になっていますが、一つの式にできます。
正規表現を使って、その他の文字を全部削除しています。
効率は良くないでしょう。
int c = s.charAt(i); の int を char にします。
int でも動くはずですが、charAt は char を返しますから。
結局、この質問者は何も返事してきませんでした。
これぐらい書いてほしかった。
public static int count3(String s) {
int k = 0, n = s.length();
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
if (c == 'B')
k += 2;
else if (c=='A' || c=='D' || c=='O' || c=='P' || c=='Q' ||
c=='R' || c=='a' || c=='b' || c=='d' || c=='e' ||
c=='g' || c=='o' || c=='p' || c=='q')
k++;
}
return k;
}
public static int count4(String s) {
int k = 0, n = s.length();
for (int i = 0; i < n; i++)
switch (s.charAt(i)) {
case 'B':
k++;
case 'A': case 'D': case 'O': case 'P': case 'Q':
case 'R': case 'a': case 'b': case 'd': case 'e':
case 'g': case 'o': case 'p': case 'q':
k++;
}
return k;
}
public static int count2(String s) {
int k = 0, n = s.length();
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
if (c == 'B')
k += 2;
else if ("ADOPQRabdegopq".indexOf(c) >= 0)
k++;
}
return k;
}
public static int count(String s) {
return s.replaceAll("[^ABDOPQRabdegopq]", "").length()
+ s.replaceAll("[^B]", "").length();
}
効率は良くないでしょう。