• 締切済み

java 9の倍数 プログラム

数字による長い文字列を入力し、それが9の倍数であるかないかを出力するプログラム。但し、9の倍 数であることの判定は、次のように行うこととする。すなわち、%(あまり)は使わないこととする。 423711は、9の倍数である。 4+2+3+7+1+1=18 1+8=9 ⇒ 9となれば、9の倍数 385772は、9の倍数でない。 3+8+5+7+7+2=32 3+2=5 ⇒ 9未満となれば、9の倍数ではない。 “d=Integer.parseInt(s);”を用いると、大きな桁数の入力につ いてエラーとなってしまう。そうならないようなプログラム 。 通報する

noname#243832
noname#243832
  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.1

9の倍数であるかどうかを判定する部分だけ書いてみました。isMultiple9("234")でtrueが返ります。 static boolean isMultiple9(String s) { int sum = 0; for (char c : s.toCharArray()) { if (Character.isDigit(c)) sum += Character.digit(c, 10); else return false; } if (sum < 9) return false; else if (sum == 9) return true; else return isMultiple9(String.valueOf(sum)); }

関連するQ&A

  • JAVAのプログラムについて

    今、JAVAを始めたのですが、どうしても分からないところがあるので教えていただきたいのですが・・・・ +と- と言う文字をキーボードから入力して、switch文で判断したいのです。 ソースは String s3 = bufreader.readLine(); 上記でキーボードから文字列を取得して、 switch(s3){ case '+': int c = Integer.parseInt(s1) + Integer.parseInt(s2); System.out.println(c); break; case '-': int d = Integer.parseInt(s1) - Integer.parseInt(s2); System.out.println(d); break; } スイッチ文で、+と言う文字と-の文字だったとき、それぞれ画面に表示させたいのですが、うまくいきません。 多分、文字列でゲットしてきたものをswitch文は使えないからだと思うのですが・・・・ すみません。もし宜しければ、教えてください。お願いします。

    • ベストアンサー
    • Java
  • javaの初心者向けプログラムの宿題です

    「指定された値の倍数を10個表示するプログラム」 です。 選択授業で取ったjavaプログラミングの宿題ですが行き詰ってしまいました。 部分的にはなんとなく理解できるのですが、全体像がつかめません。 流れだけでもご教示願います。 (1)値の入力を促す「数値入力」メッセージを表示し、文字列入力を待機する。 (2)その入力から文字列を取得して文字列をint型の数値に変換。 (3) 入力された文字列が数値以外の場合は、例外(NumberFormatException)が発生した場合に、メッセージ「半角数字で数値指定」を表示してアプリケーションを終了。 (4) 倍数を表示できる数値の範囲は、2以上100未満、範囲外の数値が入力された場合にはメッセージ「[入力から取得した数値]の倍数は表示できません。0から100までの数値を指定してください。」を表示してアプリケーションを終了。 注) 処理を開始するメッセージを表示し、入力された数値の倍数を標準出力に10個表示する。 各数値は、タブ(¥t)で区切り、5個表示毎に改行。 倍数は、0を含めて表示。 よろしくおねがいします。

  • 倍数の判定

    10の位の数をa、1の位の数をb、100の位の数をcとしたとき、 9の倍数の判定は、10a + b = 9a + (a + b) つまり、1の位の数と10の位の数の和が9のとき9の倍数。 7の倍数の判定は、100c + b = 98c + (2c + b) つまり、1の位の数と100の位の数の2倍の和が7のとき7の倍数。 ちなみに、266のとき c = 2、b = 66 と表されます。 このようにして、11,13,17の倍数の判定をしてください。 という問題があります。どのようになるでしょうか?

  • 24の倍数の判定方法、それ以外でもOK

    倍数の判定方法について、たとえば、 http://www004.upp.so-net.ne.jp/s_honma/number/multiple.htm が参考になります。 有名な話として、整数が3の倍数であることを判定するには、各桁を足した数が3で割れるかどうかを判定すればいいです。 ところで、そのサイトに書かれていない、24の倍数であるか否かの判定方法があれば教えていただきたいです。 そのサイトに書かれていないその他の数字でもOKです。よろしくお願いします。

  • Excel プログラム

    閲覧いただきありがとうございます! 学校でいくつか分からない課題が出されたので、教えてくださると嬉しいです(;_;) (1)入力された三角形の3辺の長さa,b,cからHeronの公式  S=√s(s-a)(s-b)(s-c), s=a+b+c/2  によって面積Sを計算して出力するプログラムを作れ。平方根はVBA関数Sqrで計算。 (2)入力された年に夏季オリンピックが開催されるか、冬季オリンピックが開催されるか、オリンピックが開催されないかを判定するプログラムを作れ。 (3)4の倍数である年から100の倍数である年を除いた年、および400の倍数である年が閏年である。丹生慮k巣荒れた都市が閏年かどうかを判定するプログラムを作れ。 (2)と(3)は、If 条件 Then...Else...ステートメントを用いるそうです。 よろしくお願いいたします。m(_ _)m

  • Javaのプログラムについて教えて下さい

    //Sample.java class Sample void methodA(int temp) if(temp == 0) String str = new String("Exception"); Integer.parseInt(str); else if(temp == 1) int[] array = new int[temp]; else Exception exc = new Exception(); throw exc; //SampleMain.java class ExceptionMain public static void main(string[] args) Sample sam = new Sample(); Int temp = Integer.parseInt(args[0]); Sam.method(temp); } } このプログラムの場合、ExceptionMainに新たにコードを加えて、コマンドライン引数が0,1,その他の場合に例外メッセージを出力するプログラムを教えて下さい。

    • ベストアンサー
    • Java
  • JAVAのプログラムについて

    ////////////////////////////////////////////////////////////////// abstract class Time_D { abstract Object Sec(); abstract Object Min(); abstract Object Hour(); } ////////////////////////////////////////////////////////////////// class PresentTime_D extends Time_D { Object Sec() { Date tm = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("s"); return new Integer(Integer.parseInt(formatter.format(tm))); } Object Min() { Date tm = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("m"); return new Integer(Integer.parseInt(formatter.format(tm))); } Object Hour() { Date tm = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("h"); return new Integer(Integer.parseInt(formatter.format(tm))); } } //////////////////////////////////////////////////////////////// class SetTimeCheck_D extends PresentTime_D { int settime; SetTimeCheck_D(int _settime) { settime = _settime; } //-------------------------------------------------- Object Sec() { return new Boolean(((Integer)super.Sec).intValue == settime); } Object Min() { return new Boolean(((Integer)super.Min).intValue == settime); } Object Hour() { return new Boolean(((Integer)super.Hour).intValue == settime); } } 上記のようなプログラムをした場合、下記のようなエラーが出ます。 return new Boolean(((Integer)super.Sec).intValue == settime); } のSecはPresentTime_Dのクラス内のフィールドではありません。 なぜ、このようなエラーが出るのですか?

  • このプログラムの作り方を教えてください。

    データを入力し、平均を求めて、更に平均以上と平均未満の個数を求める。ただし0未満の数が入力されると、読み込みは停止し、答えを出力するというプログラムです。 基本的な流れは (1)0未満の数により停止、データの格納 (2)平均値を求める (3)平均以上、未満の個数の計算 (4)結果出力 と思っているのですが、、、

  • javaのプログラムに関する質問

    * 入力された数値の数だけ、"*"を表示するメソッド * displayAsterメソッドを作成して下さい。 */ public class MethodAdd3 { public static void main(String[] args){ // 入力された数字をint型の数値に変換 int iInput = Integer.parseInt(args[0]); // displayAsterメソッドの呼び出し displayAster(iInput); } // ここにdisplayAsterメソッドを作成 public static void displayAster(int iInput1){ for(i=0; i<iInput1; i++){ System.out.print("*"); } System.out.println(""); } ここまで出来たのですが、コンパイルエラーになってしまいます。 考え方かヒントなど、知恵をお貸しください。

  • java 文字列の部分一致について

    /* 1から50まで順に数を表示する。 但し、その数が3の倍数か3の付く数字の場合、数字の後に!を表示する。 5 の倍数の場合は、数字の後に?と表示する。 両方の条件に合致した場合、数字の後に!?と表示する。 */ class Show{ public static void main(String[] args){ int i = 1;    while(i <= 50){       if(i % 3 == 0 && i % 5 ==0){        System.out.println(i + "!?");      }else if(i % 5 == 0){        System.out.println(i + "?");      }else if(i % 3 == 0){        System.out.println(i + "!");      }else{        System.out.println(i);      }      i++;   } } このような問題で、3を含む数字、とあるので、文字列の部分一致を検索する時に使用するStringクラスのindexOfを使用するのでは?と考えています。しかし、こちらはequalsで判定しますが、3の倍数は上記のコードにもある通り、==で判定しています。文字列判定と ==演算子は同じif(条件)の中には入れる事が出来ないので、じゃあどうする?という具合になってしまっています。どなたか「数が3の倍数か3の付く数字の場合」の処理を教えて頂けないでしょう?よろしくお願い致します。

    • ベストアンサー
    • Java

専門家に質問してみよう