JAVA学习博客---2015.5
? ? 上一次的學(xué)習(xí)博客寫的和流水賬差不多,有點生硬的和背目錄一樣,所以既然學(xué)習(xí)的目的是程序,那么這個月的學(xué)習(xí)博客就用程序來說點東西吧。這個月看了一些C和JAVA的視頻,開始看別人寫的程序,能看的懂但是自己去寫的話前后邏輯還有方法類的使用不是很清楚。好吧,先去膜拜大神,一步一步來吧。
?
? 先來說一個C的程序。這個程序是把一個十進制的數(shù)字轉(zhuǎn)成二進制的編碼,十進制當(dāng)中是逢十進一,二進制逢二進一,無論是什么樣的語言寫的任何程序,在計算機里面的記錄方法均為二進制。
#include<iostream> using namespace std; int main() {int T;cin >> T;while(T--){unsigned int n;char bas[30];cin >> n;unsigned int k = 0;if(n == 0)cout<<0;else{while(n){if(n & 1)bas[k++] = '1';elsebas[k++] = '0';n >>= 1;}}for(int i=k-1;i >= 0;i--){cout << bas[i];}cout << endl;} }?
?
?#include<iostream>
這個是C的標(biāo)準(zhǔn)I/O頭文件,標(biāo)準(zhǔn)庫定義了 4 個 IO 對象。處理輸入時使用命名為 cin(讀作 see-in)的 istream 類型對象。這個對象也稱為標(biāo)準(zhǔn)輸入。處理輸出時使用命名為 cout(讀作 see-out)的 ostream 類型對象,這個對象也稱為標(biāo)準(zhǔn)輸出。
程序里面有輸入輸出的內(nèi)容所以這個是必不可少的???????????????????????????????????????????????????????????????????????????????????? using namespace std;
namespace是指標(biāo)識符的各種可見范圍。命名空間用關(guān)鍵字namespace 來定義。命名空間是C++的一種機制,用來把單個標(biāo)識符下的大量有邏輯聯(lián)系的程序?qū)嶓w組合到一起。此標(biāo)識符作為此組群的名字。
即讓std內(nèi)定義的所有標(biāo)示符都是有效,相當(dāng)于一個全局變量。
int char
這些標(biāo)示符是用來聲明變量的類型,int整數(shù),char符號。在這個程序當(dāng)中聲明了T為int類型,把bas為char字符變量。
?????? if else
標(biāo)準(zhǔn)的if語句,即如果,不然。用來建立條件入口。
?? while
循環(huán)語句,計算機的一種基本循環(huán)模式。當(dāng)滿足條件時進入循環(huán),不滿足跳出。這里的程序要求用戶輸入一個變量的T,入口條件當(dāng)T--?? unsigned int? 在函數(shù)體內(nèi)用到了unsigned int, 是使用無符號的整數(shù)類型。 char bas[30]; 建立一個數(shù)組長度為30的char 數(shù)組。 for(int i=k-1;i >= 0;i--) for循環(huán)條件入口,當(dāng)整數(shù)i等于k-1,且i>=0,就i--,若第一個條件為假,后面的算式就不執(zhí)行了。 看明白這個程序還有一個很重要的東西就是明白十進制轉(zhuǎn)化為二進制的原理,基本的算法是這樣的。 用x表示十進制的x,假定x變成2進制后的數(shù)為三位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
故每一步的余數(shù)為:
c, b, a
把它們顛倒,就得到a,b,c
原理只有一條,可以證明/看出每次除以2的余數(shù)正好是2進制的每一個數(shù)。(……看了好半天……) 這個是一個非常短的程序,一個很實用的小工具,它可以作為一個方法放到一個class當(dāng)中,也可以把這個當(dāng)做父類做繼承。 ? ? 現(xiàn)在來說一個JAVA程序。 import javax.swing.JOptionPane; // program uses JOptionPanepublic 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)當(dāng)用戶輸入錯誤數(shù)據(jù)時候,提示用戶輸入錯誤,并要求用戶重新輸入內(nèi)容。JOptionPane.showMessageDialog(null, "輸入錯誤,請重新輸入華氏溫度.", "輸入",JOptionPane.PLAIN_MESSAGE);}}// 攝氏度=(5/9)*(華氏度-32) , 即 攝氏度=(華氏度-32)÷1.8// secondNumber = JOptionPane.showInputDialog("輸入被乘數(shù)");number2 = (number1 - 32) / 1.8;JOptionPane.showMessageDialog(null, number1 + "華氏度 = " + number2+ "攝氏度", "結(jié)果", JOptionPane.PLAIN_MESSAGE);} // end method main } // end class Addition
?這是一個將華氏度轉(zhuǎn)化成為一個攝氏度的程序
//后面是注釋,程序不讀這些內(nèi)容
當(dāng)然這個程序的算法也是基于華氏度和攝氏度的轉(zhuǎn)化算法
攝氏度=(5/9)*(華氏度-32)
程度考慮到用戶輸入錯誤的情況。
?
感覺C和JAVA有種不一樣的使用方法,JAVA喜歡調(diào)用很多已有的東西,C喜歡設(shè)定一些規(guī)則。
?
-------------------------------------------------------------------------------
因為主要是去學(xué)JAVA的,所以現(xiàn)在主要看別人寫的JAVA代碼,先去明白基本的規(guī)則,目前還是很菜,在敲別人的代碼的同時去想別人為什么這么寫,這樣的設(shè)計有什么好處,或者這些代碼能不能夠作為其他程序的一個方法。TUT。
轉(zhuǎn)載于:https://www.cnblogs.com/hello-2015/p/4523694.html
總結(jié)
以上是生活随笔為你收集整理的JAVA学习博客---2015.5的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WCF中使用控件的委托,线程中的UI委托
- 下一篇: quartz (一) 基于 Quartz