学习了将近四周的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的再认识。的更多相关文章

  1. 201671010127 2016—2017—2 Java学习周结

    时间真是个最公平东西,只要能够好好地利用它,它可以为我们带来我们我们所想要的东西.学习Java已经有一周了,对于Java基础知识的认识也更进一步,对Java的兴趣也愈来愈浓.实现一个Java程序,主要 ...

  2. 一个小栗子聊聊JAVA泛型基础

    背景 周五本该是愉快的,可是今天花了一个早上查问题,为什么要花一个早上?我把原因总结为两点: 日志信息严重丢失,茫茫代码毫无头绪. 对泛型的认识不够,导致代码出现了BUG. 第一个原因可以通过以后编码 ...

  3. 201671010127 2016—2017—2 Java怎样解决Java程序中中文乱码的问题。

    这是本次第二次分享新手在编程中遇到的问题,相信很多Java新手和我一样,在Java编程中会遇到中文乱码的情况,下面我就给大家分享我遇到问题和解决问题的具体过程. 我先用Notepad++写了一个如下的 ...

  4. charles刷分微信跳一跳小程序对https的理解

    以前以为只要安装了https 客户端与服务端的数据会被加密就安全了 事实上 只要任意一款抓包工具 并伪造证书  就可以解密这个被所谓https加密的数据 如  可以下载charles的根证书  作为伪 ...

  5. 美国评出2016最值得去的旅游胜地+纯电动车郊游记+DIY一个小电动车

    美国评出2016最值得去的旅游胜地(10) http://bbs.miercn.com/bd/201510/thread_569397_1_10.html 自带发电机! 北汽E150 EV纯电动车郊游 ...

  6. 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 ...

  7. 发现一个小坑的地方,unity的协程,想要停止,必须以字符串启动

    今天想要停止一个协成,发现调用 StopCoroutine(ShowDebug()); 竟然不管用,后来看了文档才知道,原来想要停止协成,必须用字符启动协程 StartCoroutine(" ...

  8. 【转】2016/2017 Web 开发者路线图

    链接:知乎 [点击查看大图] 原图来自LearnCodeAcademy最火的视频,learncode是YouTube上最火的Web开发教学频道,介绍包括HTML/CSS/JavaScript/Subl ...

  9. 用android去写一个小程序

    前言: 软工的一个小作业:实现"黄金分割小游戏", 需要结对编程,队友:陈乐云    共用时两天. 早期思路设计: 采用键值对的形式,以Map作为存储结构.优点:能够将数据与用户对 ...

随机推荐

  1. Thrift之java实例

    一.java实例 1.下载与安装thrift工具 http://thrift.apache.org/download/ .服务器代码 服务Test实现类 package com.zychen.thri ...

  2. iOS开发之谈谈App应用的架构搭建(推荐给大家看)

    1.iOS应用架构谈 开篇: 2.iOS应用架构谈 view层的组织和调用方案: 3.iOS应用架构谈 网络层设计方案: 4.iOS应用架构谈 本地持久化方案及动态部署: 5.iOS应用架构谈 组件化 ...

  3. ES中保护对象的措施总结

    必要性:  JS中的对象可随意修改属性值,可随意添加删除属性,太乱,数据安全得不到保障. 如何保护: 保护属性: 保护对属性值的修改 对象属性分为: 命名属性: 可直接用.访问到的属性 数据属性: 直 ...

  4. Precision/Recall、ROC/AUC、AP/MAP等概念区分

    1. Precision和Recall Precision,准确率/查准率.Recall,召回率/查全率.这两个指标分别以两个角度衡量分类系统的准确率. 例如,有一个池塘,里面共有1000条鱼,含10 ...

  5. C++11 Lambda表达式(匿名函数)

    http://www.cnblogs.com/RainyBear/p/5733399.html http://blog.163.com/lvan100@yeah/blog/static/6811721 ...

  6. mac brew安装使用卸载

    (一)安装 1.浏览器打开brew.sh,进入homebrew主页.找到install homebrew 的命令: /usr/bin/ruby -e "$(curl -fsSL https: ...

  7. struts2.5框架使用通配符指定方法,某一个匹配不到

    在学习struts框架时经常会使用到通配符调用方法,如下:但奇怪的是,在validateName请求老报404,其他的都是ok的,开始以为是配置错了,检查好久才知道: <action name= ...

  8. Java中取整和四舍五入

    import java.math.BigDecimal;  import java.text.DecimalFormat; public class TestGetInt{  public stati ...

  9. git自用笔记

    同步远程库:git clone xxx.git [filename] git ls-files: 查看已经添加进暂存区的文件. 在commit前修改一个文件后(假设名为:xxx.file),想撤销时, ...

  10. new Date(2016,3,29,10) 时区的问题

    http://my.oschina.net/xinxingegeya/blog/394821http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089 ...