• 締切済み

javaの繰り上がった回数を表示するプログラム

javaの繰り上がった回数を計算するプログラム 1ケタから10ケタの足し算をし繰り上がった回数を表示するプログラムを作成したいのです。 例 入力:159 444 出力:2回 入力:6789 4321 出力:4回 このようなメソッドはあるのですが、{???}のところに入る部分が分かりません。 static private int 繰り上がり回数(long m1,long m2){ int c=0,kuri=0; while( (m1!=0) && (m2!=0) ){ kuri= {???} /10; c+=(kuri!=0)?1:0; m1/=10;m2/=10; } return c; }

  • Java
  • 回答数5
  • ありがとう数0

みんなの回答

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.5

>これはどのようにできますか?? 下位桁からの繰り上がりで当該桁が繰り上がるのを気にしなければこれでいいです。

sfefew201
質問者

補足

気にします。。。笑

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.4

kuri = (int)((m1 % 10 + m2 % 10 + kuri) / 10); ですね。確認しました。

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.3

No2さん次なんですよ。 私も考えたんですけど、 下位からの繰り上がりの情報が要るんです。 4と5と下からの1を加えて繰り上がるのを数えないといけないんです。

sfefew201
質問者

補足

これはどのようにできますか??

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.2

たぶん、 m1 % 10 + m2 % 10 kuri = (m1 % 10 + m2 % 10) / 10; 例: m1(159)を10で割ったあまり(9)がm1に入る m2(444)を10で割ったあまり(4)がm2に入る 両者を足して(13)、10で割った商(1)がkuriに入る。 商が1(0でない)ので、cをインクリメントする。 m1とm2を10で割って、新しいm1 = 15, 新しいm2 = 44 以下同様

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

>このようなメソッドはあるのですが どこにありますか?標準関数ではないですよね。 学校の宿題ですか? 適当な「{???}」の穴は埋まりそうにないです。

関連するQ&A

  • javaの繰り上がった回数を表示するプログラム

    javaの繰り上がった回数を表示するプログラム javaの繰り上がった回数を計算するプログラム 1ケタから10ケタの足し算をし繰り上がった回数を表示するプログラムを作成したいのです。 例 入力:159 444 出力:2回 入力:6789 4321 出力:4回 このようなメソッドはあるのですが、{???}のところに入る部分が分かりません。 static private int 繰り上がり回数(long m1,long m2){ int c=0,kuri=0; while( (m1!=0) && (m2!=0) ){ kuri= {???} /10; c+=(kuri!=0)?1:0; m1/=10;m2/=10; } return c; }

  • Javaプログラミング

    Javaプログラミングで分からない課題が出たので、教えてもらえませんか? 実行結果 1つ目の整数を入力してください。 23 2つ目の整数を入力してください。 12 足し算の結果:35 引き算の結果:11 プログラムの大枠はこのようになるのですが public class 〇〇 { public static void main(String[] args) { System.out.println("1つ目の整数を入力してください。"); } public static int add(int a,int b) { return (a + b); public static int sub(int a,int b) { } }

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

    */コマンドライン引数で2つの数字と1つの記号を受け取ります。 * //受け取った記号が『+』ならplusメソッドを呼び出し、 * //受け取った記号が『-』ならminusメソッドを呼び出し、 * //受け取った記号が『×』ならmultiplyメソッドを呼び出し、 * //受け取った記号が『÷』ならdivideメソッドを呼び出し、 * //それ以外が入力された場合は『計算できません。』と表示する * //プログラムを作成してください。 * */ public class MethodAdd9 { public static void main(String[] args) { int input1 = Integer.parseInt(args[0]); int input2 = Integer.parseInt(args[1]); String sign = args[2]; //ここにプログラムを追加してください if(sign.equals("+")){ plus(input1,input2);//プラスメソッドへ } if(sign.equals("-")){ minus(input1,input2);//マイナスメソッドへ } if(sign.equals("*")){ multiply(input1,input2);//掛算メソッドへ } if(sign.equals("/")){ divide(input1,input2);//割算メソッドへ } } // 四則演算を行うメソッドを追加 //プラスメソッド表示 public static void plus(int a,int b){ int c=a+b; System.out.println(a+b); } //マイナスメソッド表示 public static void minus(int d,int e){ int f=d-e; System.out.println(d-e); } //掛算メソッド表示 public static void multiply(int g, int h){ int i=g*h; System.out.println(g*h); } //割算メソッド表示 public static void divide(int j,int k){ int l=j/k; System.out.println(j/k); } } ここまで出来て、記号を認識してくれるようにはなったのですが、何故か"*"掛算の記号だけ読み込んでくれません。また、ここから「計算出来ません」と表示させるにはどうすれば良いでしょうか。知恵をお貸しください。

  • Javaのプログラムで・・・

    Javaのプログラムで1~20までの整数乱数を実行後に指定回数だけ発生させ、そのうち何%が奇数であったかを表示するプログラムを作成中です。 乱数を発生させるところまでは行ったのですがここからどのように計算していくのかわかりません。 以下が作成したものですがアドバイスお願いします。 import java.io.*; public class Rand { public static void main(String args[]) throws IOException { System.out.print("発生させる乱数の回数は?"); BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num= Integer.parseInt(str); for(int i=1;i<=num;i++){ int a=(int)(20*Math.random()+1); System.out.println(a); } for(int a=1; a<=;a++){ if(a%2==1); System.out.println("発生した乱数の"++"%が奇数です。"); } } }

  • ポインタを使ったプログラム

    Cを勉強し始めて3ヶ月ほどの初心者です。 ポインタの概念がどうしても理解できず、つまずいています。以下のような簡単な問題があります。 「関数void func( int *n1, int *n2, int *n3 )を作り、1以上50以下の整数で,2または3または7で割り切れない整数を画面に表示するプログラムを作れ。なお、第1,第2,第3引数のアドレスの中身は、それぞれ2,3,7で割ったときのあまりとする。」 2で割ったときのあまり、3で割ったときのあまり、7で割ったときのあまりの積が0でないときに表示していけばよい、という考えから、以下のようなプログラムを作ってみました。 #include<stdio.h> void func(int *n1, int *n2, int *n3); int main(void) { int m,*m1,*m2,*m3; m1 = &m; m2 = &m; m3 = &m; for(m=1;m<=50;m++){ func(m1,m2,m3); if(*m1 * *m2 * *m3 != 0){ printf("%d ",*m1 * *m2 * *m3); } } } void func(int *n1, int *n2, int *n3) { *n1 = *n1 % 2; *n2 = *n2 % 3; *n3 = *n3 % 7; } ただ、本質がわかっていないまま作っているので、明らかに間違っていると思います。ポインタを使わなければ作れると思うのですが。 どこが間違っているのか、正しいプログラムは何か、初心者にもわかるように教えていただければありがたいです。

  • Javaのプログラムが完成出来ません・・・

    この前、大学からこんな課題が出されました。 以下の条件が含まれてるシェルソートのプログラムを作成せよ。 条件。 ・ソート済み部分に新しい値を挿入するための空き場所を作るメソッドを入れること。 ・配列の逆順数を計算するメソッドを入れる。 ・今の歩幅より一段階小さい歩幅を計算するメソッドを入れる。 ・配列の大きさに一番合った歩幅を計算するメソッドを入れる。 ・歩幅hの挿入ソートを行うメソッドを入れる。 ・シェルソートを行うメソッドを入れる。 ・mainメソッドを完成させ、ソート過程を表示しながらシェルソートを実行するようにする。 ・作成したプログラムが正しく選択ソートを実行していることが分かる実行結果を示すこと。 ・値は、 a[0]=0, a[1]=30, a[2]=20,a[3]=10 一応プログラムは、 class ShellSort{ static int compare = 0; static int copy = 0; static void showArray(int a[], int N){ //2-0:逆順数と共に配列の内容を表示するメソッド //動作:N個の要素を持つ配列aの要素を全て画面に表示する //} static void initArray(int a[], int N){ //2-0:配列にランダムな値を代入するメソッド //動作:N個の要素を持つ配列aに対し、1~Nまでの範囲の数をランダムに入れる //ただし、a[0]には常に0を入れること。 } static int shiftLargerElements(int a[], int v, int i){ //2-0:ソート済み部分に新しい値を挿入するための空き場所を // 作るメソッド //動作:配列aに対し、a[i]より手前にあるvより大きい要素を後ろ //に1つずつずらしてvを挿入するための空き場所を作る。最後に、 //できた空き場所の添え字を戻り値として返す。 //空き場所を作るまでに行った比較回数を変数compareに加算 //空き場所を作るまでに行ったコピー回数を変数copyに加算      int space = 0; int j; j = i; while((compare++ >= 0) && (a[j-1] > v)){ a[j] = a[j-1]; copy++; j--; } space = j; return space; } static int shiftLargerElements(int a[], int v, int i, int h) { //2-1:ソート済み部分に新しい値を挿入するための空き場所を // 作るメソッド //動作:配列aに対し、a[i]より手前にある要素 //a[i-h],a[i-2h],a[i-3h],...のうち、vより大きい各要素を後ろに //hだけ移動させてvを挿入するための空き場所を作る。 //最後に、できた空き場所の添え字を戻り値として返す。 //空き場所を作るまでに行った比較回数を変数compareに加算 //空き場所を作るまでに行ったコピー回数を変数copyに加算 int space = 0; return space; } 現在はここまでしか作成出来てません。 それ以降でつまづいています。 分かる人がいましたら、是非教えて下さい。

  • 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
  • アルファベットの出て来た回数

     自分で考えてみようと思って考えたプログラムなのですが、ポインタを用いてabc・・・・・とアルファベットをどう進めて行けばいいか分かりません。  出来れば見本のプログラムを書いて頂ければうれしいです。    それと、””と’’と{}の使い分けは何ですか?  私が今考えているのは  「a[100]という数列にランダムに入っているアルファベットはそれぞれ何回出て  きているかabcd・・・・・・zの順に出力する」   プログラムです。    下が考えてみたものです。 #include<stdio.h> main(void) { static char a[100]=’adhfdfhhlljyerhcvcjhljeyruqqruqruietyiucvnasqasdjh’; static int count[100]; int I; char *alpha,*suu; alpha=a; I=0; while(*alpha!=’\0’) { for(*suu=’a’;*suu<=’z’;*suu+=’b’-‘a’) { if(*alpha==*suu) ++count[I]; ++I; } } for(*suu=’a’,I=0;*suu<=’z’;++I,*suu+=’b’-‘a’;) printf(“%c の出で来た回数は %d\n”,*suu,count[I]); }

  • javaのプログラムで・・・

    以下に示すプログラムの出力結果がなぜこうなるのか教えてください。メソッドaction1()あたりからどういう風に処理されているのか分かりません・・・。 class AA{ int fa,fb; AA(int a,int b){ fa=a; fb=b; } void action1(){ fa++; int fb=fa; } void action2(int fa){ fa=fa*100; } } class workg2{ public static void main(String[] args){ AA a1=new AA(10,200); System.out.println(a1.fa+","+a1.fb); a1.action1(); System.out.println(a1.fa+","+a1.fb); a1.action2(a1.fb); System.out.println(a1.fa+","+a1.fb); } } 出力結果: 10,200 11,200 11,200

    • ベストアンサー
    • Java
  • オブジェクト指向なJavaプログラムとは?

     Javaで,キーボードから入力した8桁の文字列を出力するというプログラムを作成したい,8桁の文字列に対して,checkを行い文字列が未入力だとエラーが投げられる。  また,02345334,のように1文字目が0だとエラーが投げられ, 文字列が9桁や7桁になってもエラーが投げられるというプログラムを 継承、オーバーロード、オーバーライドを使って作成したい。 (文字列に入力する文字は全角英数字でも半角英数字でも出力されるようにする。 例: 1a2B3C4d )  まず,NyuryokuMainというメインクラスを作り,キーボードから入力した文字を出力するというプログラミング。  次に,NyuryokuCheckクラスでboolean型で文字列が未入力かどうかをif文で判別し,次に与えられた文字列が8桁以内かをboolean型で判別する。までを、NyuryokuCheckクラスで行い、  SubNyuryokuCheckクラスでNyuryokuCheckを継承し,8桁の文字列の1桁目が0かをbooleanで判別する。  というような,プログラムを作りたいのですが,どのようにしたらよいかわかりません。よいサンプルなどがあったら教えてください!

専門家に質問してみよう