2017年3月11日 星期六

JAVA for 亭貽 屬性、變數、建構元 複習

首先,
先把屬性變數差異釐清,我稍微改了一下福哥的程式....

先看ABD
AB為屬性
D為變數
如何判別?基本上就是 
只要在CLASS 不在函數(包含main主人)內的都是屬性

另外! 如果在class建立 若輸入成 double p=3.14
在double前面沒輸入任何的 private public protected 那麼就是預設(default) 寫成(default) double p=3.14
default 基本上與public 是相同的
唯一不同在於 public 是可以對於不同資料夾公開
但default 只能在同個資料夾使用
也就是說,default不能在不同資料夾被呼叫 而public 可以

接下來剩下C的部分

super();//呼叫父程式 無論是否有寫
只要繼承必定在建構元第一列出現

我們知道 Coin繼承了Circle
所以當main開始創立 coin1 的並把2.5和10傳入Coin時,
因為super();的關係,會先跑去找"父程式" 的建構元,
那如果我們不加 public Circle(){
}
我們也知道若不加,系統雖然會幫我們加,但在呼叫
super();"父程式" 系統必定會指定到Class Circle看不到的建構元,
仔細看一下 我們傳了double 2.5和 int 10 這兩個參數,會完全對不到Circle的建構元,所以在編譯就出錯了....
為了彌補 所以才補上去,讓系統在編譯時,就知道沒有對應的參數

 複習一下 public default proected private封鎖程度(大到小)
1.public 意旨對外公開,任何人都可以呼叫取用包含其他資料夾的程式

2.(default) 與public 大致相同,唯一不同就是不同資料夾不能被取用

3.protected 意旨只有被繼承或相同class,才能取用

4.private 意旨只有對class類別公開,其他不同class不能任意取用










最後附上程式碼
class Circle{


   private static double p=3.14;
   private double rad;
   public Circle(){

   }
   public Circle(double r){
      rad=r;
   }
   public void setRadius(double r){
      rad=r;
      System.out.println("radius="+rad);
   }
}
class Coin extends Circle{
   private int value;
   public Coin(double r, int v){
         super();
      int x=233333;
      setRadius(r);
      value=v;
      System.out.println("value="+value);
      System.out.println(x);
   }
}
public class app10_3{
   public static void main(String args[]){
      Coin coin1=new Coin(2.5,10);
   }
}
 









 

2017年3月10日 星期五

JAVA 一、二維陣列 練習

亂數產生6個(double)實數存到陣列,陣列需由大到小排序,顯示出來。必須要有,排列前排列後,且是用迴圈列印出來






















某一水果商分別賣三種水果A B C,價格分別為 5 10 15元,而在早上 下午 晚上賣出不同數量
數量依序早上 下午 晚上
A:68 77 43
B:45 63 55
C:56 65 97


1.請算出在早上水果個別銷售總金額
2.請算出在這天內,水果個別銷售總金額

除了數量能直接指定給陣列外,其餘只能用迴圈方式操作陣列


JAVA for 亭貽 多載

題目如下
若我們計算 正方形 長方形 與輸入字串 且我們都用 "count" 方法(女僕)來進行多載運算面積

因為多載有兩種情況
所以 變成三胞胎




結果如圖 我們可以看到
正方形面積運算
長方形面積運算
以及字串輸出 Take it Easy (放輕鬆點)

2017年3月9日 星期四

JAVA練習題 5-3迴圈

請利用迴圈撰寫出如下圖結果的程式
使用者能自行輸入階層,來產生不同階級的星號


請撰寫出 使用者能依照自己喜好的範圍 做平方相加相減 規律如下
1^2-2^2+3^2-4^2+5^2-6^2..............
 



起始點與終點安全性請做好 不能崩潰

請試著撰寫 使用者自行輸入範圍內的平方值總和
1^2+2^2+3^2..................
Start為起點 Finsh為終點



請試著撰寫 讓使用者自行輸入幾乘幾的乘法表




2017年3月8日 星期三

JAVA練習題-3

試撰寫出輸入值所有質數
並由大到小排列...

答案如下圖

JAVA 練習題目-2

利用for迴圈撰寫出一個能產生結果程式
請先畫流程圖.....

JAVA 題目練習

假設某工作站工讀生的薪資為

60小時內 基本時薪每小時100元
61-75小時 基本時薪1.5倍
76小時以上 基本時薪2.5倍

所以如果80小時的話 時薪為60*100+15*100*1.5+5*100*2.5=9500

答案如圖

2017年3月5日 星期日

JAVA CLASS 控制 乘法表









/*乘法表 private public 控制*/
import java.util.*;
class SumArray{
 private int xmap,ymap;
    private int[][] map;
 public void set(int x,int y){ //傳直給xmap ymap
  xmap=x;
  ymap=y;
  setmap();
 }
 private void setmap(){
  map=new int[xmap+1][ymap+1];
  int sum=0;
  for(int i=0;i<=xmap;i++){
   for(int j=0;j<=ymap;j++){
    if(i>0&&j>0){
     map[i][j]=i*j;
     sum+=i*j;
     System.out.print(i+"*"+j+"="+map[i][j]+"\t");
    }
   }
   if(sum!=0)System.out.print(sum);
   sum=0;
   System.out.println(); 
  }
 }
}
public class Diffclass{
 public static void main(String[] args){
  Scanner sc=new Scanner(System.in);
  int x=0,y=0;
  System.out.println("plz type x");
  x=sc.nextInt();
  System.out.println("plz type y");
  y=sc.nextInt();
  SumArray sum1=new SumArray();
  sum1.set(x,y); 
 }
}

2017年3月4日 星期六

Java 修正 for 半姊

第一題 輸入數字滿足5和6的倍數
其實這題不用switch畢竟if else 就能解決了
既然用了 那還是看看排版吧.....


其實一開始一看 感覺怪怪的 怎麼只用一個switch....
我看了第二次才看到原來是switch的巢狀
那switch也是迴圈

所以.....應該改成這樣吧?


還有該一個 case 配一個 break因為排版關係所以 最下面default break就消失掉了.....

第二題 輸入數字或英文 判斷是數字或大小寫英文

這題就可以用switch寫法會比較簡短 但不會用就畫蛇添足


這兩段應該合併再一起才對....
合併的方法 我拿一題做舉例
 ex:我輸入1 顯示1 我輸入2顯示2 我輸入3顯示3
就這麼簡單...... 這裡一樣我用c++寫 異曲同工之妙

注意swtich括弧內的if else if簡化版....
意思 如果num==1那就傳值1 num==2那就傳值2 以次類推
"?"表示做甚麼事 ":"表示否則else
所以應該怎麼改應該會了.....
接下來3和4題都可以比照第二題方式改變



[Git]記錄點控制管理

假設情境:
今天假設我們處於一種三心兩意的狀態.....想要無痛回到以前版本,
畢竟下過了git commit -m ""指令已經成為紀錄點了(commit下之前,最好還是仔細思考比較好)
理所當然的想到Git指令:git reset --hard HEAD^1(or更久以前的版本)
但是!又想回到剛剛較新的版本的時候又該如何是好呢??而且還想救回剛剛被自己刪掉的檔案
ps.因為筆者準備把之前的文章搬過來,但又怕不完整,所以還是整個流程跑下來比較實際,之後後續再作補充

流程開始
這邊我們用GIT SHELL 這個軟體操作(方便看追蹤狀態)
一開始一定先創建資料夾讓這個資料夾內所有資料都能被Git追蹤到
指令:
mkdir commit_demo #創建commit_demo資料夾
cd commit_demo #進去commit_demo
git init #使當前資料夾能使用git指令
echo "message" >test.txt #建立資料夾並在裡面填寫內容
git add . 如圖
擷取_2017_03_04_19_54_53_370.png
git commit -m "message" # 記錄點 message 盡量以英文為主 否則不支援Unicode
像是這樣如圖
擷取_2017_03_04_19_58_07_923.png

解決辦法:git commit --amend -m "message" #修改上次記錄點的紀錄文字
這邊我把字換掉 換成num1
我們去確認狀況是否修改成功
gitk --all
如圖
擷取_2017_03_04_19_59_31_216.png
接下來 為了讓大家清楚看到記錄點的控制 都會用gitk --all 讓大家看清楚版本控制
我們先把版本增加為3個 分別為num1 num2 num3
txt檔案 分別為 test.txt test2.txt test3.txt如下圖
擷取_2017_03_04_20_05_16_70.png
擷取_2017_03_04_20_05_47_747.png

之後理所當然的 想回到num2版本
git reset --hard HEAD^1 如圖
擷取_2017_03_04_20_08_46_195.png
結果發現 我還想要 存在於num3記錄點內的test3.txt 或是我想要回到num3記錄點
但記錄點已經不見了!!!
不管我們用git log 查還是 gitk --all都已經不存在了如圖
擷取_2017_03_04_20_11_47_511.png
這時候該怎麼辦呢?

這時候我們用一個指令 git reflog
擷取_2017_03_04_20_13_15_227.png
有沒有看到熟悉的num3? 對沒錯 其實git 還是很佛心的幫你記錄下來了(只要.git 還在一切搞定)
那我們要怎麼回去呢?
於是接下來我們看到 num3 HEAD前面有串英文+數字(這裡是純數字 沒差) 那個就是所謂的記錄點編碼(這邊礙於不是整篇重點無法詳細介紹)

於是我們輸入
git reset 看到的編碼
擷取_2017_03_04_20_22_28_995.png
好,我們回到了num3的進度了.....
但 請特別注意 若是刪除掉的檔案 其實光是這樣還是無法救回
系統顯示 Unstaged 那個被刪除的檔案
用dir 看了一下資料夾內容....確定 test3.txt真的被刪掉了
只有還存在的檔案 修改能回復
但要救回檔案還是可以的...
git checkout master test3.txt #回復 test3.txt

擷取_2017_03_04_20_24_33_196.png

這樣下來,我們看到了 test3.txt終於回來了((灑花
我們去gitk --all看看狀況如圖

本篇到此結束....
筆者只是GIT初學者而已,若有更好的方法還請各位大大指教