实验一Control Statements.docx
《实验一Control Statements.docx》由会员分享,可在线阅读,更多相关《实验一Control Statements.docx(11页珍藏版)》请在冰豆网上搜索。
![实验一Control Statements.docx](https://file1.bdocx.com/fileroot1/2023-1/6/ee730847-244e-45cb-a903-b2a2e54180c2/ee730847-244e-45cb-a903-b2a2e54180c21.gif)
实验一ControlStatements
实验一ControlStatements
一、实验目的:
1.BefamiliarwithJAVAdevelopingenvironment
2.Graspswitchstatementsandloopstatements
二、实验内容:
数制转换问题,编写一个应用,接收用户输入的一个10进制数,然后分别把它转换为2进制、8进制和16进制数输出。
三、实验要求:
必须用分支结构和循环结果去实现数制转换,只要求能完成正整数的转换。
设计一个类DataTransfer,里面包括3个公共的类方法,分别把指的整数参数转换为2进制、8进制和16进制数,私有的类方法transfer2Other用于把第一个参数转换为由第二个参数指定的数制。
比如,transfer2Other(85,2)把85转化为2进制数。
toBinary、toOctal和toHexadecimal都通过调用transfer2Other方法来完成。
Transfer2Other方法的基本流程是:
Str=“”;
While(num!
=0)Do
D=num%base;
Str=toChar(D)+Str;//toChar是一个用户自定义函数,用于把数字转化为字符
num=num/base;
Endwhile
Returnstr
四、实验学时:
2学时
五、实验步骤:
1、EdittheJavaprogram;
packagecontrol.statements;
importjava.util.Scanner;
publicclassControlStatements
{
publicstaticvoidmain(String[]args)
{
//TODOcodeapplicationlogichere
DataTransferdata=newDataTransfer();
Scannerscanner=newScanner(System.in);
System.out.print("请输入一个十进制数:
");
intnum=scanner.nextInt();
intflag=0;
if(num<=0)
{
num=-num;
flag=1;
}
Stringa=data.toBinary(num);
Stringb=data.toOctal(num);
Stringc=data.toHexadecimal(num);
if(flag==1)
{
System.out.print("\n十进制转化为二进制-"+a);
System.out.print("\n十进制转化为八进制-"+b);
System.out.print("\n十进制转化为十六进制-"+c);
}
else
{
System.out.print("\n十进制转化为二进制"+a);
System.out.print("\n十进制转化为八进制"+b);
System.out.print("\n十进制转化为十六进制"+c);
}
}
}
classDataTransfer
{
publicStringtoBinary(intnum)
{
Stringbinary=transfer2Other(num,2);
returnbinary;
}
publicStringtoOctal(intnum)
{
java.lang.Stringoctal=transfer2Other(num,8);
returnoctal;
}
publicStringtoHexadecimal(intnum)
{
Stringhexadecimal=transfer2Other(num,16);
returnhexadecimal;
}
privateStringtransfer2Other(intnum,intbase)
{
Stringstr=newString();
intD;
while(num!
=0)
{
D=num%base;
if(D>=10)
{
str=toChar(D)+str;
}
else
{
str=D+str;
}
num=num/base;
}
returnstr;
}
publicStringtoChar(intd)
{
Stringx=newString();
switch(d)
{
case10:
x="A";
break;
case11:
x="B";
break;
case12:
x="C";
break;
case13:
x="D";
break;
case14:
x="E";
break;
case15:
x="F";
break;
default:
break;
}
returnx;
}
}
2、CompileJavaprogram,findthesyntacticerrorsintheprogram,recordthemainerrorsandcorrectthem;
输入程序,编译无误。
3、Testtheprogramusingthepre-designedtestcase,findthelogicalerrorsintheprogramandcorrectthem;
1)测试:
随机取五个测试数:
7、16、222、350、4011,测试结果如下:
a)7
b)16
c)222
d)350
e)4011
显然结果错误,十进制转换为十六进制失败,检查程序,发现问题并加以改。
将代码:
privateStringtransfer2Other(intnum,intbase)
{
Stringstr=newString();
intD;
while(num!
=0)
{
D=num%base;
str=toChar(D)+str;//toChar是用户自定义函数,用于把数字转化为字符
num=num/base;
}
returnstr;
}
publicchartoChar(intdecade)
{
return(char)(decade+'0');
}
改为:
privateStringtransfer2Other(intnum,intbase)
{
Stringstr=newString();
intD;
while(num!
=0)
{
D=num%base;
if(D>=10)
{
str=toChar(D)+str;
}
else
{
str=D+str;
}
num=num/base;
}
returnstr;
}
publicStringtoChar(intd)
{
Stringx=newString();
switch(d)
{
case10:
x="A";
break;
case11:
x="B";
break;
case12:
x="C";
break;
case13:
x="D";
break;
case14:
x="E";
break;
case15:
x="F";
break;
default:
break;
}
returnx;
}
f)-999
负数转换出错,检查程序并加以修改。
修改程序如下:
将代码:
publicstaticvoidmain(String[]args)
{
//TODOcodeapplicationlogichere
DataTransferdata=newDataTransfer();
Scannerscanner=newScanner(System.in);
System.out.print("请输入一个十进制数:
");
intnum=scanner.nextInt();
Stringa=data.toBinary(num);
Stringb=data.toOctal(num);
Stringc=data.toHexadecimal(num);
System.out.print("\n十进制转化为二进制"+a);
System.out.print("\n十进制转化为八进制"+b);
System.out.print("\n十进制转化为十六进制"+c);
}
改为:
publicstaticvoidmain(String[]args)
{
//TODOcodeapplicationlogichere
DataTransferdata=newDataTransfer();
Scannerscanner=newScanner(System.in);
System.out.print("请输入一个十进制数:
");
intnum=scanner.nextInt();
intflag=0;
if(num<=0)
{
num=-num;
flag=1;
}
Stringa=data.toBinary(num);
Stringb=data.toOctal(num);
Stringc=data.toHexadecimal(num);
if(flag==1)
{
System.out.print("\n十进制转化为二进制-"+a);
System.out.print("\n十进制转化为八进制-"+b);
System.out.print("\n十进制转化为十六进制-"+c);
}
else
{
System.out.print("\n十进制转化为二进制"+a);
System.out.print("\n十进制转化为八进制"+b);
System.out.print("\n十进制转化为十六进制"+c);
}
}
4、Runthefinalprogram,andanalyzetheresults。
修改后运行程序,再次输入测试数,运行结果如下:
a)7
b)16
c)222
d)350
e)4011
f)-999
六、总结