这是一个家庭作业问题
如何用for循环反转Java中的整数?用户将输入整数(我不知道它将持续多长时间),我需要反转它。即:如果他们输入12345,我的程序返回54321。
这是catch,你不能在这个问题中使用String,StringBuffer,数组或其他高级结构。
我对我需要做的事情有基本的了解。我的问题是......在for循环中,条件不需要是x<整数的长度(位数)?没有String我该怎么做?
感谢任何输入,如果需要,我会添加更多信息。
编辑:
当然,在内省之后,我意识到我应该使用另一个for循环来做到这一点。我所做的是创建一个for循环,通过除以10来计算数字:
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?
答案 0 :(得分:6)
虽然您的原始数字非零,但请将结果乘以10,然后将原始数字除以10除以。
例如,假设您的原始号码是12345.从结果0开始。
你的任务,如果你选择接受它,就是用Java实现它。 :)(提示:除法和余数是Java中的单独操作。%
是余数运算符,/
是除法运算符。分别取余数,然后将原值除以10.)
答案 1 :(得分:5)
您需要使用数学来访问每个数字。以下是一些启动的提示:
使用%
mod运算符提取数字的最后一位数字。
使用/
除法运算符删除数字的最后一位数字。
如果数字中没有更多数字,请停止循环。
答案 2 :(得分: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;
}
答案 3 :(得分: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;
}
}
}
答案 4 :(得分: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);
}
}