201671010127 2016—2017-2 通过一个小程序对Java的再认识。
学习了将近四周的Java语言,对于Java语言,我也有了更进一步的理解,出于对Java语言的喜爱,我总是喜欢没事的时候,自己敲一些很简单的代码,一边学习Java语言,一边对比C语言,往往可以帮助我们更好的学习Java言,由于我们先学习了C语言,每次写Java程序时,我们总会习惯性的把C语言的语法带到Java语言里,但由于Java和C语言的语法又有一定的差别,所以会导致我们写的程序无法通过编译。因此我们通过比较性的学习,更加能使我们很好地了解Java语言,下面就我遇到的问题和大家分享一下。
我分别用C语言和Java语言写了一个实现两个任意进制数之间转换的程序。
Java版:
package first;
/**
* 利用字符串与整型的转换实现数字分离
* 作者:牛百泉
* 日期:2017/9/14 23:37
*/
import java.util.*;
public class niubaiquan
{
public static void main(String[] args) {
// TODO Auto-generated method stub
char NumberArray[]=new char[32];//创建一个数组用来储存字符串数字
byte NumberArray2[]=new byte[32];//用来储存转换后的每一个数字
int sum=0,i,j=0,radi1,radi2;
@SuppressWarnings("resource")
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整形数据");
int number=input.nextInt();
System.out.println("请输入这个整数的进制");
radi1=input.nextInt();
System.out.println("请输入这个整形数据要转换成的进制数");
radi2=input.nextInt();
if(number<0)
number=-number;//也可以用绝对值方法
String data=String.valueOf(number);//将一个整型数据转换成数字字符串
NumberArray=data.toCharArray();//将一个字符串转换成一个字符串数组
for(i=0;i<NumberArray.length;i++)
{
int temp =(NumberArray[i]-'0');
sum+=Math.pow(radi1,NumberArray.length-1-i)*temp;//将这个数转换成十进制的数
}
do
{
NumberArray2[j]=(byte) (sum%radi2);//转换成需要的进制
sum/=radi2;
j++;
}while(sum!=0);
System.out.printf("%d进制的%d转换成%d进制后为",radi1,number,radi2);
for(i=j-1;i>=0;i--)
{
System.out.printf("%d",NumberArray2[i]);
}
}
}
测试结果

C语言版
#include<stdio.h>
#include<math.h>
#define N 50
int main()
{
int i=0,k=0,j,t,number,number1,number2,radi1,radi2,sum=0;
int A[N],B[N];
printf("请输入一个整数和它的进制数以及要转换成的进制数:\n");
scanf("%d%d%d",&number,&radi1,&radi2);
printf("%d进制的%d转换成%d进制后为",radi1,number,radi2);
while(number!=0)//分离数字
{
A[i]=number%10;
number=number/10;
i++;
}
for(j=0;j<i;j++)//转换成十进制
{
number1+=A[j]*pow(radi1,j);
}
do//转化成需要的进制
{
B[k]=number1%radi2;
number1/=radi2;
k++;
}while(number1!=0);
for(t=k-1;t>=0;t--)
{
printf("%d",B[t]);
}
return 0;
}
测试结果

在这两个程序中我感觉最大的区别是Java语言和C语言对于字符串的的处理有很大的不同,在c语言中,字符串和字符串数组没有多大的区别,基本是通过字符串数组来进行字符串的操作,而在Java语言中,字符串有专门的处理方法,虽然两者之间可以通过String.valueOf()和toCharArray()方法来转化,但它们去是不同的两个数据类型。
201671010127 2016—2017-2 通过一个小程序对Java的再认识。的更多相关文章
- 201671010127 2016—2017—2 Java学习周结
时间真是个最公平东西,只要能够好好地利用它,它可以为我们带来我们我们所想要的东西.学习Java已经有一周了,对于Java基础知识的认识也更进一步,对Java的兴趣也愈来愈浓.实现一个Java程序,主要 ...
- 一个小栗子聊聊JAVA泛型基础
背景 周五本该是愉快的,可是今天花了一个早上查问题,为什么要花一个早上?我把原因总结为两点: 日志信息严重丢失,茫茫代码毫无头绪. 对泛型的认识不够,导致代码出现了BUG. 第一个原因可以通过以后编码 ...
- 201671010127 2016—2017—2 Java怎样解决Java程序中中文乱码的问题。
这是本次第二次分享新手在编程中遇到的问题,相信很多Java新手和我一样,在Java编程中会遇到中文乱码的情况,下面我就给大家分享我遇到问题和解决问题的具体过程. 我先用Notepad++写了一个如下的 ...
- charles刷分微信跳一跳小程序对https的理解
以前以为只要安装了https 客户端与服务端的数据会被加密就安全了 事实上 只要任意一款抓包工具 并伪造证书 就可以解密这个被所谓https加密的数据 如 可以下载charles的根证书 作为伪 ...
- 美国评出2016最值得去的旅游胜地+纯电动车郊游记+DIY一个小电动车
美国评出2016最值得去的旅游胜地(10) http://bbs.miercn.com/bd/201510/thread_569397_1_10.html 自带发电机! 北汽E150 EV纯电动车郊游 ...
- Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)
Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer Advanced Installer :Free for 30 da ...
- 发现一个小坑的地方,unity的协程,想要停止,必须以字符串启动
今天想要停止一个协成,发现调用 StopCoroutine(ShowDebug()); 竟然不管用,后来看了文档才知道,原来想要停止协成,必须用字符启动协程 StartCoroutine(" ...
- 【转】2016/2017 Web 开发者路线图
链接:知乎 [点击查看大图] 原图来自LearnCodeAcademy最火的视频,learncode是YouTube上最火的Web开发教学频道,介绍包括HTML/CSS/JavaScript/Subl ...
- 用android去写一个小程序
前言: 软工的一个小作业:实现"黄金分割小游戏", 需要结对编程,队友:陈乐云 共用时两天. 早期思路设计: 采用键值对的形式,以Map作为存储结构.优点:能够将数据与用户对 ...
随机推荐
- int 21h 汇编
INT 21H 指令说明及使用方法 转自http://www.cnblogs.com/ynwlgh/archive/2011/12/12/2285017.html 很多初学汇编语言的同学可能会对INT ...
- [置顶]
C语言学习入门
编译文件:cc -c one.c two.c 生成.o目标文件 链接文件:cc one.o two.o 默认生成 a.out 执行文件 指定生成的可执行文件名 cc -o one one ...
- jquery自定义插件实现分页效果
这节介绍如何自定义jquery插件,实现分页效果,话不多说,先看看实现的效果: 分页插件 实现的代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTM ...
- android自定义view系列:认识activity结构
标签: android 自定义view activity 开发中虽然我们调用Activity的setContentView(R.layout.activity_main)方法显示View视图,但是vi ...
- linux, windows, mac, ios等平台GCC预编译宏判断
写跨平台c/c++程序的时候,需要搞清各平台下面的预编译宏,区分各平台代码.而跨平台c/c++编程,GCC基本在各平台都可以使用.整理了一份各平台预编译宏的判断示例. 需要注意几点: * window ...
- Kivy: Building GUI and Mobile apps with Python
Intro Python library for building gui apps (think qt, gdk,processing) build from ground up for lates ...
- php语法笔记
1. php中设置页面的编码方式: header(“content-type:text/html;charset=utf-8”); 2. 数据类型 布尔类型:Boolean/bool:true.f ...
- MPLS基础一
多协议标签交换(MPLS) 是一种用于快速数据包交换和路由的体系,具有管理各种不同形式通信流的机制. 内容:RID / MTU / 认证 / TTL ...
- (十一)java循环结构
while(循环的条件) {循环的语句} int a = 1; while(a < 5) { System.out.println(a);//1,2,3,4 a++; } System.out. ...
- 接口测试基础——第4篇logging模块
Logging:日志记录是为了跟踪记录软件运行时,发生的事件,包括出错,提示信息等等. log日志级别:日志级别大小关系为:CRITICAL > ERROR > WARNING > ...