JAVA学习博客---2015.5
上一次的学习博客写的和流水账差不多,有点生硬的和背目录一样,所以既然学习的目的是程序,那么这个月的学习博客就用程序来说点东西吧。这个月看了一些C和JAVA的视频,开始看别人写的程序,能看的懂但是自己去写的话前后逻辑还有方法类的使用不是很清楚。好吧,先去膜拜大神,一步一步来吧。
先来说一个C的程序。这个程序是把一个十进制的数字转成二进制的编码,十进制当中是逢十进一,二进制逢二进一,无论是什么样的语言写的任何程序,在计算机里面的记录方法均为二进制。
#include<iostream>
using namespace std;
int main()
{
int T;
cin >> T;
while(T--)
{
unsigned int n;
char bas[];
cin >> n;
unsigned int k = ;
if(n == )
cout<<;
else
{
while(n)
{
if(n & )
bas[k++] = '';
else
bas[k++] = '';
n >>= ;
}
}
for(int i=k-;i >= ;i--)
{
cout << bas[i];
}
cout << endl;
}
}
#include<iostream>
这个是C的标准I/O头文件,标准库定义了
4 个 IO 对象。处理输入时使用命名为 cin(读作 see-in)的 istream 类型对象。这个对象也称为标准输入。处理输出时使用命名为 cout(读作
see-out)的 ostream 类型对象,这个对象也称为标准输出。
程序里面有输入输出的内容所以这个是必不可少的
using namespace std;
namespace是指标识符的各种可见范围。命名空间用关键字namespace
来定义。命名空间是C++的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。
即让std内定义的所有标示符都是有效,相当于一个全局变量。
int
char
这些标示符是用来声明变量的类型,int整数,char符号。在这个程序当中声明了T为int类型,把bas为char字符变量。
if
else
标准的if语句,即如果,不然。用来建立条件入口。
while
unsigned int 在函数体内用到了unsigned int, 是使用无符号的整数类型。
用x表示十进制的x,假定x变成2进制后的数为三位abc,其中a为最高位,b为次高位,c为最低位。 则有 x = a*2^2 + b*2^1 + c*2^0= 4a+2b+c
所以
x%2 = c,
x/2 = a*2 + b
令x=x/2,则x=a*2+b
x%2 = b,
x/2 = a
令x=x/2,则x=a
x%2 = a
x/2 = 0
故每一步的余数为:
c, b, a
把它们颠倒,就得到a,b,c 原理只有一条,可以证明/看出每次除以2的余数正好是2进制的每一个数。(……看了好半天……)
这个是一个非常短的程序,一个很实用的小工具,它可以作为一个方法放到一个class当中,也可以把这个当做父类做继承。
现在来说一个JAVA程序。
import javax.swing.JOptionPane; // program uses JOptionPane public class Converter {
public static void main(String args[]) {
String firstNumber;
double number1 = 0;
double number2 = 0;
boolean loop = true;
while (loop) {
firstNumber = JOptionPane.showInputDialog("请输入华氏温度");
try {
number1 = Double.parseDouble(firstNumber);
loop = false;
} catch (NumberFormatException e) {
// (2)当用户输入错误数据时候,提示用户输入错误,并要求用户重新输入内容。
JOptionPane.showMessageDialog(null, "输入错误,请重新输入华氏温度.", "输入",
JOptionPane.PLAIN_MESSAGE);
}
} // 摄氏度=(5/9)*(华氏度-32) , 即 摄氏度=(华氏度-32)÷1.8
// secondNumber = JOptionPane.showInputDialog("输入被乘数"); number2 = (number1 - 32) / 1.8;
JOptionPane.showMessageDialog(null, number1 + "华氏度 = " + number2
+ "摄氏度", "结果", JOptionPane.PLAIN_MESSAGE); } // end method main
} // end class Addition
这是一个将华氏度转化成为一个摄氏度的程序
//后面是注释,程序不读这些内容
当然这个程序的算法也是基于华氏度和摄氏度的转化算法
摄氏度=(5/9)*(华氏度-32)
程度考虑到用户输入错误的情况。
感觉C和JAVA有种不一样的使用方法,JAVA喜欢调用很多已有的东西,C喜欢设定一些规则。
-------------------------------------------------------------------------------
因为主要是去学JAVA的,所以现在主要看别人写的JAVA代码,先去明白基本的规则,目前还是很菜,在敲别人的代码的同时去想别人为什么这么写,这样的设计有什么好处,或者这些代码能不能够作为其他程序的一个方法。TUT。
JAVA学习博客---2015.5的更多相关文章
- JAVA学习博客----2015.4
这是开始写的第一篇学习博客,记录一下每个月的学习进度和掌握程度,因为这是第一次写学习博客而且已经看编程方面的书已经有几个月了,所以这一篇学习博客可能看似有些乱或者篇幅太长.从十二月的<程序员教程 ...
- JAVA学习博客---2015-8
八月份的学习博客,今天已经是九月四号了,补上吧.现在我又回到C++了,JAVA的基本的东西都懂了,但是更好的掌握JAVA,我必须原路返回去学习C++,当初为了更快的学JAVA,其实我得C++都是跳着看 ...
- JAVA学习博客---2015-7
@Updata 2015.7.17 开始熟悉API.WPS首字母自动大写,有的没有加#编号的,其实方法首字母不是大写例如Char charAt 实际上是char charAt.当然骆驼写法charA ...
- JAVA学习博客---2015-6
JAVA核心技术卷一第一遍看得差不多了,应该是五月初开始看的,用了两个月的中午时间看完的,一共七百多页,接下来还是需要再看一遍,不懂的还是有很多. JAVA和C++一样是面向对象OOP的语言,不同于命 ...
- 一个不错的java学习博客
http://iteye.blog.163.com/blog/static/18630809620131484835129/
- java JDK8 学习笔记——助教学习博客汇总
java JDK8 学习笔记——助教学习博客汇总 1-6章 (by肖昱) Java学习笔记第一章——Java平台概论 Java学习笔记第二章——从JDK到IDEJava学习笔记第三章——基础语法Jav ...
- 学习:100个高质量Java开发者博客
谷歌关键字搜索:100个高质量Java开发者博客. Java开发牛人十大必备网站.
- Java 开源博客——B3log Solo 0.6.6 正式版公布了!
Java 开源博客 -- B3log Solo 0.6.6 正式版公布了!欢迎大家下载. 该版本号引入了数据库连接池:Druid. 另外,欢迎观摩 B3log 团队的新项目:Noty,也很欢迎大家參与 ...
- Java 开源博客——B3log Solo 0.6.7 正式版公布了!
Java 开源博客 -- B3log Solo 0.6.7 正式版公布了!欢迎大家下载. 另外,欢迎观摩 B3log 团队的新项目:Wide,也很欢迎大家參与进来 :-) 特性 基于标签的文章分类 P ...
随机推荐
- ES6中的Class
对于javascript来说,类是一种可选(而不是必须)的设计模式,而且在JavaScript这样的[[Prototype]] 语言中实现类是很蹩脚的. 这种蹩脚的感觉不只是来源于语法,虽然语法是很重 ...
- VBS获得随机数,截图函数
'获取随机数 Public function randonum() Randomize randonum = replace(10000*rnd(),".","a&qu ...
- boost的线程池和内存池 智能指针
内存池为boost自带的 #include <boost/pool/pool.hpp> 或者另外一个开源的库: nedmalloc 一个高效率的库 线程池需要下载另外一个开源库 http: ...
- modelsim(2) - vcd (dump, 查看,格式理解)
二 vcd dump 由于VCD可以用于做功耗分析,所以需要把其dump出来.另外VCD可以作为结果,也可以作为激励,但是实际看到的少啊! VCD是verilog的标准,所以有系统函数$dumpvar ...
- 【过程改进】10分钟进阶Nuget
目录 nuget初识 nuget本地包 nuget解决依赖冲突 nuget是什么 .net版的maven(java)? 如果你用过windows的chocolatey,mac的homebrew或许更容 ...
- Prefab强制使用文本模式
[Prefab强制使用文本模式] Edit -> ProjectSetting -> Editor:
- java基础八 [序列化和文件的输入/输出](阅读Head First Java记录)
对象具有状态和行为两种属性.行为存在类中的方法中,想要保存状态有多种方法,这里介绍两种: 一是保存整个当前对象本身(通过序列化):一是将对象中各个状态值保存到文件中(这种方式可以给其他非JAVA程序用 ...
- OpenShift:外国的免费云平台
二.安装openshift客户端 对于怎么安装openshift客户端,我就不说了,网上有很多教程,连官网也有他自己的教程. 官网教程:https://developers.openshift.com ...
- linux系统man命令用法和安装方法
Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可. Linux的man手册共有以下几个章节: 代號 代表內容 1 使用者在shell中可以操作的指令或可 ...
- libcurl多线程超时设置不安全(转)
from http://www.cnblogs.com/kex1n/p/4135263.html (1), 超时(timeout) libcurl 是 一个很不错的库,支持http,ftp等很多的协议 ...