1

これは宿題の問題です

Javaでforループを使用して整数を逆にする方法は? ユーザーは整数を入力し (どれくらいの長さかわかりません)、逆にする必要があります。つまり、12345 と入力すると、私のプログラムは 54321 を返します。

この問題では、String、StringBuffer、配列、またはその他の高度な構造を使用できません。

私は何をする必要があるかについての基本的な考えを持っています。私の問題は... forループでは、条件はx <整数の長さ(桁数)である必要はないでしょうか?文字列なしでそれを行うにはどうすればよいですか?

ご意見をお寄せいただきありがとうございます。リクエストがあれば、さらに情報を追加します。

編集:

もちろん、内省した後、これを行うには別の for ループを使用する必要があることに気付きました。私がしたことは、10 で割って数字を数える for ループを作成することでした。

       int input = scan.nextInt();
        int n = input;
        int a = 0;

           for (int x = 0; n > 0; x++){
               n = n/10;
                a = a + 1;
            }

編集2:

これは私が持っているものです

 int input = scan.nextInt();
        int n = input;
        int a = 0;
        int r = 0;
           for (int x = 0; n > 0; x++){
               n = n/10;
                a = a + 1;
            }
           for (int y = 0; y < n; y++) { 
                r = r + input%10;
                input = input/10;
            }
          System.out.println(input);

実行すると、元に戻すのではなく、数値が返されるだけです。つまり、1234 を入力すると、1234 が返されます。入力の最後の桁を r に追加しているので、これは意味がありません。なぜ 4321 ではないのでしょうか?

4

5 に答える 5

0
    public static void reverse2(int n){
    int a;


    for(int i = 0; i < n  ; i ++){
        a = n % 10;
        System.out.print(a);
        n = n / 10;


        if( n < 10){
            System.out.print(n);
            n = 0;
        }
        }

    }
于 2013-09-13T23:06:06.467 に答える
0

正しい方法ではないかもしれませんが、

   public static int reverseMe(int i){

    int output;
    String ri = i + "";

    char[] inputArray = ri.toCharArray();
    char[] outputArray = new char[inputArray.length];

    for(int m=0;m<inputArray.length;m++){
        outputArray[inputArray.length-m-1]=inputArray[m];
    }

    String result = new String(outputArray);
    output = Integer.parseInt(result);

    return output;
}
于 2013-03-12T00:46:45.053 に答える
0

ここにあなたのコードを修正した回答があります。

import static java.lang.Math.pow;
import java.util.*;
public class MyClass {
public static void main(String args[]) {
    Scanner scan=new Scanner(System.in);
    int input = scan.nextInt();
    int n = input;
    int a = 0;
    int r = 0;
       for (; n > 0;){
           n = n/10;
            a = a + 1;
        }
       for (int y = 0; y < input;a--) { 
            r =(int)( r + input%10*pow(10,a-1));
            input = input/10;
        }
      System.out.println(r);
}
}
于 2017-10-05T09:50:13.573 に答える