学习了将近四周的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. DRF 的 版本,解析器,与序列化

    DRF 的 版本,解析器,与序列化 补充 配置文件中的 类的调用: (字符串) v1 = ["view.xx.apth.Role","view.xx.apth.Role& ...

  2. 解决PKIX问题:unable to find valid certification path to requested target

    第一步:执行方式:java InstallCert hostname                       eg:java InstallCert www.cebbank.com 第二步:然后输 ...

  3. make: *** No rule to make target `out/target/common/obj/APPS/framework-res_intermediates/src/R.stamp'

    /********************************************************************************** * make: *** No r ...

  4. 21天学通C++_Day1

    被阿里实习生的第一轮电话面试刷掉以后,幡然醒悟,发现以前学习的C++基础一点都不扎实.为了把基础打扎实,重新学习一遍:为了让自己不放弃,也顺便可以把当天学到的东西记录下来,开始了写博客. 学习书籍:& ...

  5. L3-008 喊山 (30 分)

    喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的.原来它是彝族先民用 ...

  6. C# 报警 控制蜂鸣器发声

    在C#中可以通过以下四种方式来实现蜂鸣或者报警,播放声音之类的功能.XP下对蜂鸣有用,win7下请接上扬声器. 1). Beep的报警实现 [c-sharp] view plaincopy     / ...

  7. python 函数名,闭包

    1.函数名字的应用 函数名是什么? 函数名是函数的名字,本质:变量,特殊变量 函数名+() ———>执行此函数: 2.函数名的赋值: def func2(): print(44) f = fun ...

  8. Android Socket编程

    花了大概两天的时间,终于把Android的Socket编程给整明白了.抽空和大家分享一下: Socket Programming on Android Socket 编程基础知识: 主要分服务器端编程 ...

  9. Oracle记录(四) 简单查询、限定查询、数据的排序

    一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统.ANSI(美国国家标准学会) ...

  10. 用Toast来增加调试效率的小技巧

    import android.content.Context; import android.widget.Toast; /** * Created by apple on 10/7/15. */ p ...