我的第一个java训练作业
——进制转换器 题目:十进制向任一用户输入的N进制转换的程序。例如,提示用户输入某个进制类型,若用户输入3则表示采用3进制;随后再提示用户输入某个十进制数,假设为6;则程序返回6的三进制表示形式,即20;若输入进制为4,则6的四进制表示应返回12,以此类推。
一、遇到的一些问题
思路很简单就是做一个循环。就是输入的数字要先对N取余,第一个取余得到的就是对应最右边的位次,再以此向左;取余之后相除,除后取余得到第二位数字以后向后类推 由于第一次写java代码,以前的编程只学过C和C#还忘了很多,所以记录一下最基础的问题 1.在需要从键盘录入 Scanner XXX = new Scanner(System.in); 在调用录入键盘的输入前要写的一句话,在这个里面我的理解是XXX就是一个对象,是你自己起的名字,这句话是创建 Scanner 对象的基本语法。 一个相关的菜鸟教程 2. 为了使得程序增加用户友好性,我运用了do while循环,在最后嵌套时要注意将do while 的判定条件中的未知变量的定义要放在这个循环的外部,不然会报错。但是不知道为什么我的代码的do while 循环不太对,没有能够成功循环,如果有朋友能够指出问题感激不尽~ 3. 在程序中在程序中定义数组的方法: 4.
int size = 10;
int[] numList = new int[size];
4.在输出数组时,一开始选择的是正序输出,会导致顺序正好是反的,于是我将循环改成
for(int a=0;a<numList.length;a++)
{System.out.print(numList[10-a]);}
发现这样做程序报错了,原因是一共我为数组设置了10位,但是起始是从0开始,所以最后一位应该是9,也就是说正确的应该是:
for(int a=0;a<numList.length;a++)
{System.out.print(numList[9-a]);}
于是程序正确运行了
二、代码奉上
package mathcalculation;
import java.util.Scanner;
public class mathcalculation {
public static void main(String[] args)
{
String dialogresult="a";
do{
Scanner calculation = new Scanner(System.in);
System.out.println("欢迎来到通信本1902胡竞文的实验2");
System.out.println("请输入数字N表示你要将十进制数转为N进制数:");
if (calculation.hasNextInt())
{
int transfernum = calculation.nextInt();
System.out.println("请输入要转换的数字inputnum");
int inputnum=calculation.nextInt();
int size = 10;
int[] numList = new int[size];
int i=0;
while(inputnum!=0)
{
numList[i]=inputnum%transfernum;
inputnum=inputnum/transfernum;
i++;
}
System.out.println("对应的十位二进制数字是");
for(int a=0;a<numList.length;a++)
{System.out.print(numList[9-a]);}
System.out.println();
}
else System.out.println("输入的不是整请重新编译程序重新输入!");
System.out.println("是否要继续程序,输入Y表示继续,输入其他符号退出程序");
dialogresult=calculation.next();/为什么这里用nextString就会报错
}while(dialogresult=="Y");/为什么do while 语句在这里不能循环
}
}
三、实验截图
记录就到这里啦~拜拜
|