java实验四:流程控制(一),java实验(一) 流程控制

一、实验目的和要求

1. 熟悉JAVA的编程环境

2. 掌握分支、循环语句的使用

二、实验内容和原理

数制转换问题,编写一个应用,接收用户输入的一个10进制数,然后分别把它转换为2进制、8进制和16进制数输出。

三、实验环境

1. 硬件环境:

2. 软件环境:JDK1.5

四、算法描述及实验步骤

1. 算法描述(可以用流程图、伪代码或源程序描述)

a4c26d1e5885305701be709a3d33442f.png

2. 实验步骤

l 输入源代码

package controlstatements;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

// TODO code application logic here

DataTransfer data =new DataTransfer ();

Scanner scanner =new Scanner(System.in);

System.out.print ("please enter an num:

");

int num =scanner.nextInt();

String a =data.toBinary(num);

String b =data.toOctal(num);

String c =data.toHexadecimal(num);

System.out.print("十进制转化为二进制"+a

);

System.out.print("十进制转化为八进制"+

b);

System.out.print("十进制转化为十六进制"+c

);

}

}

class DataTransfer {

public String toBinary(int num){

String binary = transfer2Other(num, 2);

return binary;

}

public String toOctal(int num){

java.lang.String octal = transfer2Other(num, 8);

return octal;

}

public String toHexadecimal(int num){

String hexadecimal = transfer2Other(num,16);

return hexadecimal;

}

private String transfer2Other(int num,int base){

String str =new String();

int D;

while ( num != 0) {

D = num % base;

str = toChar(D) + str; //toChar是一个用户自定义函数,用于把数字转化为字符

num = num / base;

}

return str;

}

public char toChar(int decade){

return (char)(decade+'0');

}

}

l 进行编译

编译无错误。

l 进行测试,使用的测试用例:

输入: 8 预期输出:1000 ,17 ,8

输入: 10 预期输出:1010 ,12 ,A

输入: 11 预期输出:1011 ,13 ,B

输入: 12 预期输出:1100 ,14 ,C

输入: 13 预期输出:1101 ,15 ,D

输入: 14 预期输出:1110 ,16 ,E

输入: 15 预期输出:1111 ,17 ,F

五、调试过程

1. 编译过程

记录算法实现中发现的语法错误及改正

给char transition 赋予一个初值'A'

a4c26d1e5885305701be709a3d33442f.png

2. 调试过程

记录算法实现中发现的逻辑错误及改正,对每个测试用例,记录实际输出,并与预期输出进行比较,如果不同,分析产生错误的原因并改正。

输入:8

预期输出:1000 ,17 ,8

实际输出:1000 ,17 ,8

输入:10

预期输出:1010 ,12 ,A

实际输出:1010 ,12 ,:

输入:11

预期输出:1011 ,13 ,B

实际输出:1011 ,13 ,;

输入:12

预期输出:1100 ,14 ,C

实际输出:1100 ,14 ,<

输入:13

预期输出:1101 ,15 ,D

实际输出:1101 ,15 ,=

输入:14

预期输出:1110 ,16 ,E

实际输出:1110 ,16 ,>

输入:15

预期输出:1111 ,17 ,F

实际输出:1111 ,17 ,?

分析:因为代码没有考虑到十六进制中ABCDEF的含义。

六、实验结果

用与测试用例不同的输入数据运行算法,写出得到的结果,并分析结果是否正确。

输入:17

输出结果:10001 ,21 ,11

结果分析:输出结果正确。

七、总结

第一次做java实验,问题出现的还是挺多的,因为对java的运用还是不熟悉,在课上觉得Java和之前的没多大差别,但操作起来那一点的差别也让自己苦恼。今天上的实验课是有史以来第一次要求在实验课上要完成好的,所以感觉这次是最有效率的一次。

附录:

如果原来的算法中发现了错误,在附录中附上改正后的算法实现。

package controlstatements;

import java.util.Scanner;

public class Main {

public static void main(String[] args)

{

// TODO Auto-generated method stub

DataTransfer data =new DataTransfer ();

Scanner scanner =new Scanner(System.in);

System.out.print ("please enter an num:

");

int num =scanner.nextInt();

String binary =data.toBinary(num);

String octal =data.toOctal(num);

String hexadecimal =data.toHexadecimal(num);

System.out.println("十进制转化为二进制"

+binary );

System.out.println("十进制转化为八进制"

+octal);

System.out.println("十进制转化为十六进制"

+hexadecimal);

}

}

class DataTransfer {

public String toBinary(int num){

return transfer2Other(num, 2);

}

public String toOctal(int num){

return transfer2Other(num, 8);

}

public String toHexadecimal(int num){

return transfer2Other(num,16);

}

private String transfer2Other(int num,int

base){

String str =new String();

int D;

char transition ='A';

while ( num != 0) {

D = num % base;

if(D >=10

&& D <= 16){

switch(D){

case 10: transition ='A';break;

case 11: transition ='B';break;

case 12: transition ='C';break;

case 13: transition ='D';break;

case 14: transition ='E';break;

case 15: transition ='F';break;

default:;

}

}

else{

transition = toChar(D);//toChar是一个用户自定义函数,用于把数字转化为字符

}

str =transition +str;

num = num / base;

}

return str;

}

private char toChar(int decade){

return (char)(decade+'0');

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值