所以我正在尝试构建一个接受用户输入的程序,然后如果该输入介于 0 和 2097151 之间,则该程序会将该 int 转换为其等效的八进制,然后在最后显示它。我在下面发布的程序工作得很好,但可能效率不高,我很好奇,并且正在尝试寻找有关如何使用计数器控制重复的 while 循环来实现同一程序的帮助,正如建议的方法那样使用,但我不知道如何做到这一点。
我问自己并且感到困惑的问题是:如何继续将一个数字除以 8,继续对一个数字除以 8 的模,并将该模存储到单独的变量中,以便我可以打印他们就在彼此旁边吗?我不确定如何继续取模直到我的数字达到 0 并使用 while 循环跟踪余数。
需要澄清的是,这是一项学校作业,仅限于 while 循环、for 循环、逻辑运算符和 if/if else 语句。我无法使用方法或内置方法来实现所需的最终结果。
import java.util.Scanner;
public class kwatke_OctalConversion {
public static void main(String args[]) {
Scanner input = new Scanner( System.in );
int modulus1, modulus2, modulus3, modulus4, modulus5, modulus6, modulus7;
int smallest=0;
int Largest=2097151;
System.out.println("The purpose of this program is to take a value from the "
+ "user and\n convert it from a base 10 number to a base 8 number and "
+ "display it\n for the user to see the converted octal number\n"
+ "Please enter a non-negative number between 0 and 2097151 to see it's "
+ "octal equivalent: " );
int number = input.nextInt();
if (number<smallest || number>Largest) {
System.out.println ( "UNABLE TO CONVERT" );
} else {
modulus1 = (number % 8); //meat of our program, take number from user,
number /= 8; // take modulus of number, divide by 8, rinse and
modulus2 = (number % 8); // repeat storing the modulus in a differnt var
number /= 8; // each time and continusing to divide the
modulus3 = (number % 8); // leftover number by 8 until it reaches 0,
number /= 8; // storing modulus in a new variable each time.
modulus4 = (number % 8);
number /= 8;
modulus5 = (number % 8);
number /= 8;
modulus6 = (number % 8);
number /= 8;
modulus7 = (number % 8);
System.out.printf("%d%d%d%d%d%d%d\n", modulus7, modulus6, modulus5,
modulus4, modulus3, modulus2, modulus1);
}
}
}
最佳答案
您可以使用:
Scanner input = new Scanner(System.in);
System.out.println("Please enter the number : ");
int number = input.nextInt();
String result = Integer.toOctalString(number);
关于java 程序,从用户获取一个值并将其转换为其八进制等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28932843/