結膜 是一層近乎透明之薄膜,覆蓋在鞏膜和眼瞼上。
角膜 是一透明無色且沒有血管的組織,由規則排列細胞所構成。
結膜炎 分為細菌性、病毒性、過敏性結膜炎。
1. 細菌性急性結膜炎
會有紅眼、刺痛、燒灼感、分泌物較黏稠等症狀,
若引起角膜病變會伴有畏光現象。
最常見者為葡萄球菌和鏈球菌引起,一般用簡單的抗生素即可治癒。
2. 病毒性急性結膜炎
主要是流行性角結膜炎,常由腺病毒引起,一般症狀是急性發作之紅眼、流淚、分泌物增加和畏光現象,並有眼皮腫和耳前淋巴腺腫大,嚴重時會有結膜下出血和偽膜出現。
治療方式以抗發炎眼藥水來減輕不舒服症狀,一般病程約一至兩星期。但有些病患會有角膜混濁和異物感或畏光等症狀,這些混濁有時會持續幾個月或一兩年才消失。
3. 過敏性結膜炎
因接觸到過敏原引起,如花粉、毛髮、纖毛和塵土等,或者病人本有過敏體質如氣喘和異位性皮膚炎等。症狀為流淚、癢、結膜紅腫,分泌物較清澈。一般可見到結膜紅腫,甚至眼皮也會水腫,但角膜並不受波及。
治療方法可用巨細胞安定劑 Intal 等,比較厲害時可考慮使用短暫類固醇改善急性不適。
春季性和異位性角結膜炎則有較厲害表現,可能產生角膜糜爛或結痂等,而造成畏光和影響視力。一般需用到類固醇才能控制,但須小心使用,注意是否因此導致青光眼產生。
正常的角膜之上有上皮細胞保護不易感染,但當角膜上皮細胞受到損傷時(如外傷、戴隱形眼鏡等),微生物、病菌等會趁機侵入角膜,造成嚴重的角膜炎。一旦角
膜發炎侵入了上皮層底下的 Bowman 膜,則會留下白色混濁不透明的瘢痕,嚴重的角膜發炎引起潰瘍,甚至會導致失明。
流行性角結膜炎的傳染力極強,預防之道在於平時要維持良好的衛生習慣,常用肥皂洗手,並保持乾燥,避免用手揉眼睛。
要避免角膜炎方法就是要避免角膜有外傷,且在配戴隱形眼鏡有任何不適時,應儘快停止配戴,立即給眼科醫師檢查是否有角膜潰爛。早期診斷早期治療是保護靈魂之窗最好的方法。
https://www.ntuh.gov.tw/OPH/DocLib10/%E7%B0%A1%E4%BB%8B%E7%B5%90%E8%86%9C%E7%82%8E%E5%92%8C%E8%A7%92%E8%86%9C%E7%82%8E.aspx
一、眼睛紅。
二、結膜充血。
三、眼睛分泌物很多。
自己的小練習, 如有侵權, 被我不小心引用沒標名出處或是不想被我標示出來, 趕快跟我講, 有時候一忙會忘記看這個, 有問題或是有更好的辦法更要跟我講, 如果有什麼覺得可以更積極的, 也希望可以小力的酸我, 我玻璃心阿
總網頁瀏覽量
2015年10月29日 星期四
2015年10月27日 星期二
[Java] Dialog 的範例 showInputDialog
參考資料:
https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html
import javax.swing.JOptionPane;
public class Dialog_001{
public static void main(String args[]){
String name = JOptionPane.showInputDialog("Name: ","AVC");
//第二格就變程預設值, 可以字串也可以整數,試了連浮點數都行
String message = String.format("Welcome, %s, to me",name);
JOptionPane.showMessageDialog(null,message);
}
}
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
showMessageDialog方法中, 針對不同的用途用不同參數來顯示User要顯示的東西.
import javax.swing.JOptionPane;
public class Dialog_001{
public static void main(String args[]){
String name = JOptionPane.showInputDialog("Name: ","Ha");
String message = String.format("Input is : %s.",name);
JOptionPane.showMessageDialog(null,message,"Title",JOptionPane.PLAIN_MESSAGE);
}
}
showMessageDialog 的第三個和第四個參數,
要就都要有, 不然就都不要有,不然會編譯錯誤:
Dialog_001.java:9: error: no suitable method found for showMessageDialog(<null>,String,String)
JOptionPane.showMessageDialog(null,message,"Title");
^
method JOptionPane.showMessageDialog(Component,Object) is not applicable
(actual and formal argument lists differ in length)
method JOptionPane.showMessageDialog(Component,Object,String,int) is not applicable
(actual and formal argument lists differ in length)
method JOptionPane.showMessageDialog(Component,Object,String,int,Icon) is not applicable
(actual and formal argument lists differ in length)
1 error
第三個參數代表在按下確定之後,
顯示出來的視窗標題, 不寫的話就只會顯示 Message,
而第四個參數則是表示視窗要用哪種方式顯示.
都沒填就會顯示:
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQoAAAB0CAIAAADy9uubAAAOc0lEQVR4nO2d7VPa2B7H+z/lT+C1eSNLa6fdfcdd73Tqzqit7XZ7u7vV+lCtyl5vbXVdbUuf1zqWq8gChQIiJEAUFAgPApGEAO5uu+Od7u2O90VCCGioWILS+/vMdzonh5NzcOZ8ehISwokTJ040NTWhKHpreATzBZPpXyGQ/9uQsdSLuTkURZuaml69enWiqanp88+/WMEDZpyEQCBmnAySic8//6KpqekEiqIreMDsiUAgECFBMoGi6AnMF7R4oxAIpCyZ3NsTmdxbiy8GgTRQlhzrP0zpvh96VNv8MKVbcqwLo/B6WH0xCKSBMjA2a7CtEuRWbWOwrQ6MzQqj8Hq8JuIQSAPl+6FH3hBldIdrG2+I+n7okTAKr8dyIAWBNFCu33pMhLdMGCnEiIWNWLhQJk0YaXKXBiNNWNjkFv4ljVjxJSNGGjGSCG9dv/VYGIXXw7lOlWahHVUq/rFQVv9y7LwCPd9nofa0h0Dqmuu3HhMR2oxHzDhpxiOikCY80j000axSc+kemjBjke7BSVHNpBmPmLBIYXeSL2MRIkJfv/VYGIXXY2VjqzSL7ej5M387328tq1Qq0LJKCOQI0j38ZC1Cv/JEC4lxBYsn9soTbVapdws0q9Q9Q5NlNaIdS7IWobuHnwij8Hq4g+nSLHag5zuunT/zL2+x8nmv4lpvB3p+wJre0x4CqWu6h5/4Y4zFF7d4Y/y/3rjFG7d641ZvvOfWj80q9V8Fyso9t360+GJ8Yx+XmNUbs3jj/hjTPfxEGIXXAwvTpdF3oG0DNn0H2jvN13gHvuRq2gZsNBamMdv0GVSpQJUKvo134EtuU9nx895Nevoav6m4pudHKfRw5va0dLcQyD7h9LARm68LsRGbNmLzNZHgNm8MTzWr1H+W0qxS3xieei1qVtiLD6eHMAqvB04ypdF3oG037czMNWXHLIOTDG6fOfPlzGKhHi8WGHy278xtAp/tU1zTF3so29zTM07qO1C+88XbbQqpbvfpAQJhukeeBuKsfTVhX0va15K2tYR9NWFfTdjWEva1pH01YV9N9g5PNavUmQLNKnXv8JRtLWFfS9jWknZRhM1AnO0eeSqMwuvhiWRKs9SJtt1czniWZ858OaOPZGa+VXa+KK1HC6sBqlR8u8TVnBlf5Xso24xkPC/6Cu1Lei4frqzb8jcGgWQ8kQynh8OfWg6kHH7K4acc/pTDn3L4qWV/yhFI9Y381KxSJ0tpVqn7Rn5aDlCOQGrZn+JaOgIphz/lCFAOf4rTQxiF18MbZUtj6ETbBpdZb3RtsLVtcO7e2dZ7enH98r2zaN/98r1Y/Z02BarsnNuzWWy/Ntha6IHv88PdQiBl4fRwrm8tr285RVle33KuU30j080qdaRAWblvdNpZupcQTg9hFF4PXyxbGsMFtG3ImfXFsr65fgWqPHvHX1pvuFCsLMnSnTZxPb85169ovbcUy/qc986Kergwx7dRfKhbCEScnpGnwURuJUivBNMrG2lXML2yQa9s0K4g7QrSzSr1RoFmlbpfM11W49qgV4Jp1wbt2ki7NtIrG2nXBu0K0sFErmfkqTAKrwcRz5XmlwvoV0NOruwfau1/sLfeef+scBT03S/EXH/hoKj/QTxXvhn3D7UqFahS0dp/obXQQ6HN2bv3Jbstf2MQSI6I526MPgsmcu4QIwrtDtHuEOMKMQOaGeEqR79mxl1aM6CZcXG7BJnSHphgIndj9JkwCq/H6mb+KLPy4Cw6oD3a9wBpqNwYfRZObWPhTCGsqJzBwhm8pIblG5AZLMzi4QxGsjjfLMNtci3Dqe0bo8+EUXg91hLbRxjtd0pF6wPjkb4HSGOlV/Oc3PoNJ1mczOJkFifZQrJ4hPVwNZEstyl6lS1tXAy3C7n1W6/muTAKr4c/+WvdszH8d+FDqoGHR/AGIA2c0UmdwxuNM29rG4c3OjqpE0bh9Qgkf4NAGigrgfTIhK5X87y2GZnQrQTSwii8Huup3yEQSFkKelC/QyCQsvB6bFBvIBBIWYp6bAMAIAL0AABJQA8AkAT0AABJQA8AkAT0AABJQA8AkAT0AABJQA8AkAT0AABJaqOH3x+bmTH39s6q1eNCenufT0+bVlcjuVwun8/n8/kavm8AqAMfq8fr12sXL95vb9dqNI75+bTD8Q7DdjFs12x+Mz+f1mgc7e3aixfvvXrlY1mW86TmfwMAyMTh9djayoyMvDx3bkqrDXFKSEWrDZ07NzU0NBePp0ASoIE4pB5bW5lr1x739OiF5aJyHI53PT36K1e0kcgmwzDZbBYMAY4/h9GDc+PmTXOZAzs7JWGYcklu3jRfufIgHI7RNA2GAMefw+gxMvKyp0e/d4nY2dkVzssHBw179cCw3Z4efX//883NTTAEOP5UrYfVunru3NS+x1QH0cPheHfu3NTLlzYwBDj+VK3HxYv3pc7Fd3Z2BwcNXB498u6rB3em3t7+UygUSiaTDMPkcjm5/0gAOBzV6bG2Fm1v10qdf5ede2xtSZ6pt7drf/nFQZIkRVEsy8ICAhxPqtNjetqk0Tgq6CEcXI2NWSvoodE4RkZ+9vv98XicpmlYQIDjSRV65PP53t7n8/Ppg+jx6JG3gh7z8+lvvrmP43g4HD7kAqLrQhCkS3f4v7wIMXayrKNDd06MnUSQk2PEfltA41GdHmr1uNn85oB6bG5WugyiVo87nc5AIJBIJBiGOTo9augZ6PGpUYUeuVxOrR6vcO3v4Hpg2K5aPW6z2QiCiEajhzm+EmY1Nwe7uk4iCCJMRl0XIlU5Roj2Jsa4FkjpNBYpI2qxR6K9ZknrIe4HjGkUqtAjm83WVg+LxYLjOEmS6XQ6m81W98ZL9UBOjhF8qUtXeJWbhsXaffTY3n/1KHOvuEvpxD64HsTYyRJJa7VaAfJStR4V7iI5uB5m8xu1etxsNrvd7lAoRFHUR+pRPunFc1locFg9qpjN4jVi71LBSQvrR+NQhR4sy3Z3Pzv4qXkFPebn05cvT5tMJpfLxenBsmx1b/wAehQmdWHjEHpsi+f0ATyptHrsXcOA4051ekxOLh3wg93Kemg0jr4+rdx61GD1ECE6dJNGQg9xNRxcNRDVHVxh2Hrly4IH1KO9Xfvw4ZzcB1ei/7jLStzLB9BDrNnehgc+99j/rAhEOfZUp0c6ne7snK5wU4lYjwo3lbS1Tej1+hqemu+/epR9clU8UOrq2ufoSTRRJQ6uyg+JqvjkqnhSUhwb9Dj2VPfBLk3Ti4vOj78lcWLimcFg+KgPdisDB/hALajusiDDMIlEoq/vmdQN7ZW/74Fhuz09+qtXpxcWFoxG40ddFqwM6AHUgur0YFmWoqjV1fVLl2b2fh3qg7l509zRMfXixculpSWr1fpRN5UAgPxUd0sid3wVj8dxnOjqmqn2y7QdHVOzs/OLi4smk8npdMIticAxpzo9hAWEJMmVFfz69YcHfxTD1avTs7Pz3GGV3W73+XxwQztwzKn661C5XI5hmGQyGQqFPB6PVvvvr76aEB7kI9ywKH6QT1vbxN27T3U63eLiotFotNlsHo8Hvg4FHH+q1iOfz2ezWZqmNzc3g8Ggx+Ox2+0//7zY3//w8uVp8WPgLl2aunHjvlb7QqfTLSwsLC0tmUwmu93u8XiCwSB8mRY4/hzmUQxiQ0KhkM/nczqdVqvVaDQaDAa9Xr8gQq/XGwwGo9FotVqdTqfP5wuFQuAG0BAc8jlXgiHJZJIkSb/fj+O40+m02WwWi8VsNptMJpPJZDabLRaLzWZzOp04jvv9fpIkk8kkuAE0BId/SiJnCMMwFEXF4/FwOBwIBAiCwHHc7Xa7XC6Xy+V2u3EcJwgiEAiEw+F4PE5RFDwGDmgUPuoZu/l8PpfLsSxL0zRFUYlEIhqNkiQZEkGSZDQaTSQSFEXRNA0PEQUaiBo8oV2QhGEYmqbT6TQlIp1O0zTNMAyIATQcNft9D+4nCnK5XDabzWazLMuyLMuV4QcMgAYFfv4GACQBPQBAEtADACQBPQBAEtADACQBPQBAEtADACQBPeTicv94/XPUf/SnBughF6DHJwDoIRfcfN3a3qlPQA85AD3kgpuv7O//qU9ADzkAPeSCn69v39UnoIccgB5ywc3XNzt/1ieghxyAHnLBzdedd+/rE9BDDkAPueDm63/f/1WfgB5yAHrIBTdfd+sF6CEHoIdcHHD1MH9T/HGd0z/G+Pro1GnRJtem+CqsHvUC9JCLg5x7GK4gCHL6Lvl+5937HfLHFgRBrpiFcstkdOfd+x3jN4hQD+ce9QX0kIsPf3IVnDyFIKfuRoSawN3TCHJ6PCh+yXQJQZCWyQB8cnUUgB5y8cHrHsR4C4K0jK2LKtcnTyLIyXFSKOguIwhyRQfXPY4I0EMuPnjV3HO7BUFafvCLKv13VQiiuh3iC5e+Vp1q4WvgqvlRAHrIxQfvuXKNtSBIyyghqiTufoYgn40FuQKCfD27vTPbxRfgnqv6A3rIBTdfE9k/JOO9o0QQ5T83hBrHP08hyKlb3tKX5i8jCIJcXKrUVfYP0EMOQA+54OZrlHlbIY87EQQ5NYi9jTJvo9i4EkGQTr1QVmrWo8zbKLM+qBI1kwjoIQegh1xw8zWcflM5DzuL1z2aRwN8vXu8Wbz54hKCIMhn46+k+wE95AD0kAtuvm5Qv9cnoIccgB5ywc1Xf/LX+gT0kAPQQy64+UpsbtcnoIccgB5ywc1XTyxfn4AecgB6yAU3X11krj4BPeQA9JALbr4uh7L1CeghB6CHXHDz1bbB1ieghxyAHnLBzVdLgKlPQA85AD3kQu4nvu2bo/6jPzVAD7kAPT4BQA8AkAT0AABJQA8AkAT0AABJQA8AkAT0AABJQA8AkAT0AABJQA8AkAT0AABJQA8AkAT0AABJQA8AkKREDwgEUhZeDwgEsm/+B1Ub4PDWyayIAAAAAElFTkSuQmCC)
JOptionPane.WARNING_MESSAGE:
![](data:image/png;base64,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)
在這裡 icon是第五個參數,
要使用時要先 import javax.swing.ImageIcon ;
用 ImageIcon icon = new ImageIcon("C:\\Documents\\b.jpg");
在參數部分試圖片檔案的完整路徑,
用過jpg跟png都可以.
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQsAAAB2CAIAAABQ/CGuAAAT2UlEQVR4nO2d/VNT17rH1x+R6fTO7dwfmCn2jPrDYdOZ80t7Z4wvFSuthxYEb6UvlntOPcV6WxWVF1vbaxUVrYIggtqIQkHFKqdRfAEN7xEI4T0EEhIgIAQIIe/Jc3/Yyc5OsrMlHEKv9vnMd5yVtdbzrPXsrC87IYCkTq6uk6trbz/8/t/+IxpB/vC89tprr776Ku2LOrma3Pitpq1vNDo6es2aNXfv3tVoNIAgf2AcDodifPLfhTGCV16p7xwm3377bXR0dE5Ojlarzb/TjkKh8u+0d8yYy7pVgldeIS034tasWaPVagvuyFAoFKNa/fxrH2wj0dHRGo3m/D87UCiUn34ZnyfR0dFms7nwNzkK9QLp0tX7H721WSiIWFp99NbmS1fvM6tcHTOS6OhoACgSd6JQL5Dei3zz3vlCo1y6tLp3vvC9yDeZVS6PehxSfLcThXqBJBREzMmax8suLK3mZM1CQQSzyoURj0OuPOxDoV4gCQURhtbGsasFumsFumsFuqtu0T1jdMPT1vnovDvq6nlvoKdhaG0UCiKYVY6oPA4pedQfoAtryJ8/uuJ5+GMC8fD6zmqu+Vy6cvB1dpIF6cIaZqWQY4Op+qOVhBBCVh48Sed/9wJXpeylWWVy1+4zec2PrE6f5P0lj/pP7vyzXy173/WZtvdd4sfrOy+w9vy8bXCXw3Vh+fbGVZF30YS9/tvw9HBVxDoAHtyFcF63kCUURMy0SEZ/zvVKlDsqcrfPHUiPi0+hde5AOmdPoEZ+zp1pkQgFEcwqhwc9DrlWMxCgIiGJ2l4ycK1m4NrRrYRp1zzYvpJE/uMBV0hA4GLkDc/5RxRZmZ6zyDzB0hYJSVTkSiI8yj3kv/Ogtftdn637apjkfkmKhIQQduaS9MiVW4X+0wI3sJCngKccjuS8ewsILEmPdNc1cK0kfftRrh6eikrSI1kJ973rvUT/wvFwSyiImG6s1Raf0had0had0ngatOLiU5hPAOPiU/L27ffr0RSd0rDma4tP0ammG2uFgghmlQylxyGltcoAFa0lUclXlaW1D5NXkbXHWENXMyJJYhpHiF/g4sQO/xdTcaYtWkuiko9lRK7KOM055LMcT+2c+yxaS6LWbo6K/PKhN+RYItmcyM58+suoyC8f0v/yXrqFPAU85XBcAd69BQQeSyTetEF6glYUsOelOR5uCQURU5IHw/nZ6oJsdUG2Ov+4p5GtLsjO3bMvLj7F6cGvnbtn33BBtrogm/5XXZCtLjhOt6ckD4SCCGaV/QMeh5Q9UQaoaC2JSi5VlpVmRJLE/T5DD5NXRSWXeuZkZ0QSQgiJTH1Y9qRoLXMHjS3yJnlC53GzNpu1RGoi8YYrfUJY7f2x7LTBYtmr+O2ZSeVu7I8NXJG9NJONt3Z6cnYiWZVx2puqaK03ip7PzuzJUJoR6Y4K3GSITwF3OZxPKM/eAgOL1rKvLXdPkIo49sxZ4yJFO2Qo98jQ2SNDuUdUuUeGcr0N1dkjZ7/ZExefYvMlLj7l7Dd73NPOeqOGPFG0Q5hVvlbMuR1SLhkK0MV1JOrj0qHy0szIVZlnfIZqPl5F1h2n5xBCj5ZmRtLzmUB2EsnFdYQO8ZtJSOzFcslQ+fFEQhIP+IQMnUmNIv5L+yTkiS0/nhiZWhMkkKfhZd3xBdTuNu1Fv1UOxLKKXZV5hr0xb86aj1cxF8pvkyE9BcHK4X5Cg++NXT59Pd0LEea54+zhrIi15zOpUYQQwrdKyBIKIvrOnxQLV/Hou82b4uJTxj3Exad8t3kTf0jf+ZNCQQSzSmq/xyEVdaoAXVxHoj4pU1WUZa4gSQd9hmo/WRX1SRlrTp2qok51MJasO+HXyZ2Eb2Yd+wqy1j2R5OkMXJq9CovYixzlsANPJJHYi9xDtBZSu88cVueqzDNclZ7ZFbViVy2d7cyuqCCbXNRT4F9O8CeUe2/BAt0Xdt0J7h7uivz3vIBVQhHtkOqN1L0YqjrG/W91DFUdE129Mbo6hjq8JTYuPmXYl7j4lMNbYqs3RldvpO5tpO5tpKpjoqtjoqs3UrRohzCr/L3P45AbDeoAXVpPqE9/Ud9oqP10NVl/kjX0S9YKkpTuM4c9jd3paXtD1Dca1OnvB5/p0xm4Yu2nqwOnca8SpJzAPfMsvaDac7+iVnxVG3DRqE9PZq1YnZXrv7of7A37bWBxTwHXBVzo3jgD3TWS9y9x9QSrKFgtfKssXEJBRH/R6UdxbwforUdxb//wYVxcfMqAB7/2Dx/GcQW+/Sju7f6i00JBBLPKjh6PQyobh/2Vs42sPnSOaZNtme6hy+sJWbH7sX+74tAK95zL6wn1WQUzmW5fXk/I+pzhhc1kOgM2U3FoBcc0n1U8ewuW1jd/xaEVhBD+pYPWzrv5nG0kcDL7qjYOVzY+/my157L45wzM9txt+JXjp+ftLbD8nEOeh48/W01W7H7M1RO0onO7Kd89B7/IoUsoiFCK8iXbY55s3/Rk+yZJcoxku1dx8Sk9HuLiU44kJfr1SJiQ5BhJcoxk+yY6UCnKFwoimFWSuzwOudWkZWsDIYRQO66zOk9tY75EbDjF9Is2EGrDFsqvP2sLIYSQLSJ6gjvP9UNvuBMwmVmj3ja7k5Fkx2pCCCGrt21YHTiNcxX2BpjwQ/kB+fN3U4Rvab7amcn5u6mA5JIdq7dl+U7O2kLe2C1hJ8/fTZEtIq6c7D0vdBu+5fjpOXu71STawLoRvLFb4tPj3qR/z3MqYu3ZMy1glVPbvDUuWEJBhKr8UtMXCU1fbPUowfMw4VhyMvPpx7Hk5KYvtgb0JLBCEpr+7s6jKr8kFEQwq2xjHPJry8iiJNpAqB03FxeLQo382jJy6K9kw+mQo4SCCO2d8tY9O5ZIn9MN7Z1yoSCCWSW+0+B2yG3p6KJ05R0S/fnNxcWiwqor7/i8N/ivQ7//loLtczF7EwoidA+qOrJ2dWTukmftkmfu6mCUldqRtasja1dHZqrc3U7tyErtyPS0M91iopiG7kGVUBDBrPJXucchd56OLkpX3iHRn1cuLhaFWrze/9Nf7p8vnKyvWVrdP1/4/p/+wqwS2+FxSFXrGAr1AqnwYtV7kW8u+e+HvBf5ZuHFKmaVGJnnfchvbToUCuWnDe2ee4i4fRyFQvlpbZvHIXdlEygUyk9r2gyEEEI7RI8gCIu7son/bEWHIEgQ0CEIwgc6BEH4QIcgCB/oEAThAx2CIHygQxCED3QIgvCBDkEQPkJzCMCc1T7zbH7K4nKBA8AGYDODfQacFrA5wAlT0w4nOAAsDqsRwG53OuwAThe4AJanHgRZWkJziNM+DWCxOK0uALAD2AHA7gKbSq0AAJcL7E6wOh0OsAHYXeCcnjPYAWzoEOSFJdR7iAlcVnACOAHsMDoyMW42T4HTCGAGmLeCHWDSND8PNgs4LQDqibF5u9UBYHU6lqceBFlaQnOI3W51uVwjw+PgAHCAA8AAoAdQm42zALp5+8DYlBHACKA1zM0DmAGsAHYAixPvIcgLSYj3ECe4XGAGmHdBT/eA3Q5js/aKB5Kz10ouVN7MvyU+XFiSV1b5VeaR709dGp0GowvkAyMWACu+ykJeTEJ0iAPa5f3zADrLvAPA5gTdNBT/IjYCaEyOKYABE9QpxvUAP9+oLxDdHzeCCcDkBFnf6PLUgyBLS8j3EACnRq8amFCaXNA5MDYPUFx+XzsLT/umm3vn63vmGgdNajM09M0WXZfklYhbenVmABPeQ5AXkxAd4jJ1tD4GmLI4x3v65UabzQBQdP3eLIBUYWjuna/vNkv6LANGUBlhGiA164zGAAYntPVPLk89CLK0hOgQi2ZS1QyWoSlNM5hVI4PSSash/0bFDMDAjLVOMTM4B/V91rpuY/kD+YgJvjp0bnAKpL16I95DkBeTEB0y3/X41hnF08qHlWd6Gkru386rl9VeuFlmAGhWqtUmqO2Zbug1tatskq6xoRnYefBsq9JmAJD2GpanHgRZWkJzyJyiqrI4DWzdAEpwygGGnGD4ufyqERxSxWBL7/jIHEgVhoFnrmbFiGYedqbn1XWZpH3W+s7Z0PZVlUZRVFrV4gvzIstL8Eu06OSyvASKSsiTcT1CXk5Cc8h07w3J7R/B3qHortAqbxon6ya00oNp/w0wp3umHRzSdPcNG6zQpVQ9lcstAKmZ55r6bFKF7Umox2jJHLKEVkOH/BEJzSFD0p9rK78HWxMYaqZ7rjXdOiz+ZX9p4a6Sn/7nyc28k9/97bfKvNNH994qLbh1KV+rGPwy7XjLgE01A42906HtiznY9DFMS0ugKIo5j1VpVLDOPBkrWpZHz6B8TzLLNawZAT4KNFdwh7DzoGleJkJzyGTfraZ/Hof5hpaq7+tL9zZe36tXXAbTA7A0g0UK1now14O5HexK0dE0sFv2ZpxqUlqaFHM1spHQ9uXrECohT+ZupVV5RumT6O3lcIie+x7iZz9viO/ZXrhDZHkJPj5dqnsW8vsTmkOMyuqbhWlg6QFzG1gegaUazDVzE7fHFJfHB4snNcUT6uLZkXJwyX7K/AzMs6l7jzYN2AanoUUR4jv1oIfY6xD2V++EPNmiHRLCgWbfKQJvGLRv8S7ychHq+xCxpDIHHIo57V2Y/02vzB/uOKvrLxiSHzGOn+tq+npInnW/8m99zafrbp9ISYrZl3G0oWemRWGslelC29cCHOI5154Hi3CInn2sF2AVvntI4J0MeRkIzSHzyupbhd+AuWlGUzHQlg3m68b+E2C8NNO9b7b/G4Pi62lF2lD7QbDcrinfC2ZFf3dPQ6tqzAR1Pc9C29fy3ENYsF7DBSeIQ9jd+CrrJSPE7/b2ie8UfQP2hhnVlfH+czMDZxxDOZbOdGfffmvvbkP3ztHWL3Tdh8B+++L/xur77/a2t2pG51t6xxt6Q/xMfQEOYX359mvRwwtwCNtpgRMX/D6E+x0SeuWlIDSHmPvFZSdSwNIAs+KZ3vNGRf6sPNvWfczcmgk935l6MvSdGXO9R8Fws7EiXd/3cFyjaZWpNHpo7Anx93sXcg/x+16W9xVTWhrHyyjWWQ3yKsv/tVEI38vyvkHxro0OeSkI8VXWUEPlhW/zDn9+9exXFYW7am9mnPv2/cYbB0u+f09Sklr4w6b6X/cVfPfutdOfVhSkTQ93dD7tnJ6BwRFLozzE72Xxgy/2keUiNIe0S5smRkdmp/Sjw0NdXU3KwdbpSeWYWtbXXuuaH9UNd3dIa8Ax3dtRPz4x0tomHx829HVOyDt1rfIl/el3dAiyXITmEIcLunpGu3rHZZ2aZwZLl1LV3qWQdw/NzNi6u4e7e8c6OtVarf6Z3tw5MK7Tu2TSYbBCW7sWf4MKeUEJzSGKjqnB/tmOrlGjDTp7VArluN4Ig2pjd+fEqNbW2TXhcELrU2VXz+iA2ijrnhhT23s7p9o6x572LemrLARZLkL8xHAEng07Jw3Qr51qkw/andDRpZV3j1tdIJNPTM+ASm3q7JuyAEg7hidnQak0T+pBrbNoZqzLUw+CLC0h/kU5pbO/Y6JJPqCZNz/t17TIlDMzFuWwTtqvUemtI1pTe6tmZBaa+ieb5f1WAGmvXto7o520qsZC/LksBPn/Af7NRQThAx2CIHygQxCED3QIgvCBDkEQPtAhCMIHOgRB+ECHIAgf6BAE4QMdgiB8oEMQhA90CILwgQ5BED7QIQjCBzokjBw4VrD8+r2LftlAh4QRdMhLADokjNBHdkRvWh6hQ8IBOiSM0Ed2Yta8PEKHhAN0SBhxH9k5K6dEYuniFCwhOiQcoEPCCH1kDSYbp0RiabAhHvFEoUPCATokjNBH1mR1cEoklgYb4hFPFDokHKBDwgh9ZO0OJ6dEYmmwIR7xRKFDwgE6JIzQRxaCIBJLgw3xwBOFDgkH6JAwssB7yKMM7//xk1Q86J6gvJjEekjPSSoexHvIMoMOCSMLeR9SnU5RVFKhwmGyOkyK4kSKotIfMe3EIqXJ6jA9yKA8/fg+ZJlBh4SR538vq7doK0VtLRxgOrsKkygqqaDXxhp6uJ+iqMSiLvxe1u8BOiSMPPfzEFlBIkUl5nWz+ruLEigqoUDBNKoOUBSVXsWKws9DlhN0SBjh/0xdJJa25idSVOLZTlZ/Z2E8RcXn97kb+w/Gb01093ii8DP15QQdEkb4fy5LJJY25yVSVOJPMla/rPBDivowr5duUNTBm3rTzTR3g47Cn8taTtAhYYQ+supnRk6JxFJ12/kPKOqD3B6msz53K0VtzWkz+gzdPkBRFLXvnjsqSEJ0SDhAh4QR+sgqdXOcEomlSt1c2R6KoraekM4pdXNKacEHFEXtucu0PzjTrdTNKXXdJ+Ld0+goTqFDwgE6JIzQR7Z/1MApkVhKN67t8X4eEvdTl3tCS0Ec+2HlfoqiqA8LmKhAoUPCATokjNBHtkc7yymRWBpsiEc8UeiQcIAOCSP0ke0cnuaUSCwNNsQjnih0SDhAh4QR+sjKVHpOicTSYEM84olCh4QDdEgYoY9s6+AUp0RiabAhHvFEoUPCATokjNBHtlkxySmRWBpsiEc8UeiQcIAOCSP0kW3oe8apRf8WbrCE6JBwgA4JI/SRlfRMLI/QIeEAHRJG6CNb26VbHqFDwgE6JIyE+4/Hcer3LvplAx0SRtAhLwHoEAThAx2CIHygQxCED3QIgvCBDkEQPtAhCMIHOgRB+ECHIAgf6BAE4QMdgiB8oEMQhA90CILwgQ5BED78HYJCofz0RpuWEELeaNOiUChOEQRBePg/0/Hf/nuHFiwAAAAASUVORK5CYII=)
https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html
import javax.swing.JOptionPane;
public class Dialog_001{
public static void main(String args[]){
String name = JOptionPane.showInputDialog("Name: ","AVC");
//第二格就變程預設值, 可以字串也可以整數,試了連浮點數都行
String message = String.format("Welcome, %s, to me",name);
JOptionPane.showMessageDialog(null,message);
}
}
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
Icon description | Java look and feel | Windows look and feel |
---|---|---|
question | ![]() |
![]() |
information | ![]() |
![]() |
warning | ![]() |
![]() |
error | ![]() |
![]() |
showMessageDialog方法中, 針對不同的用途用不同參數來顯示User要顯示的東西.
import javax.swing.JOptionPane;
public class Dialog_001{
public static void main(String args[]){
String name = JOptionPane.showInputDialog("Name: ","Ha");
String message = String.format("Input is : %s.",name);
JOptionPane.showMessageDialog(null,message,"Title",JOptionPane.PLAIN_MESSAGE);
}
}
showMessageDialog 的第三個和第四個參數,
要就都要有, 不然就都不要有,不然會編譯錯誤:
Dialog_001.java:9: error: no suitable method found for showMessageDialog(<null>,String,String)
JOptionPane.showMessageDialog(null,message,"Title");
^
method JOptionPane.showMessageDialog(Component,Object) is not applicable
(actual and formal argument lists differ in length)
method JOptionPane.showMessageDialog(Component,Object,String,int) is not applicable
(actual and formal argument lists differ in length)
method JOptionPane.showMessageDialog(Component,Object,String,int,Icon) is not applicable
(actual and formal argument lists differ in length)
1 error
第三個參數代表在按下確定之後,
顯示出來的視窗標題, 不寫的話就只會顯示 Message,
而第四個參數則是表示視窗要用哪種方式顯示.
都沒填就會顯示:
JOptionPane.WARNING_MESSAGE:
JOptionPane.ERROR_MESSAGE:
JOptionPane.PLAIN_MESSAGE:
JOptionPane.INFORMATION_MESSAGE,icon
在這裡 icon是第五個參數,
要使用時要先 import javax.swing.ImageIcon ;
用 ImageIcon icon = new ImageIcon("C:\\Documents\\b.jpg");
在參數部分試圖片檔案的完整路徑,
用過jpg跟png都可以.
2015年10月26日 星期一
[Crypto] diceware 密碼生成器 概念
在 https://share.inside.com.tw/posts/20241 的報導,
說一個小女孩利用diceware 產了密碼來賣人,
一組密碼 每個 2 美元.
理面對於 Diceware 解釋是講
Diceware 是一個有著幾十年曆史的生成密碼的方式。它的操作方法是擲六個面的骰子來隨機生成數字,數字會對應一串字符。這些字合併成一個無意義的字符串(大概像這樣 ample banal bias delta gist latex),因為是隨機的所以非常難破解。不過這個口令對人們來說又很容易記住。
有點不太知道在講啥, 所以另外查了一下資料
https://www.v2ex.com/t/106491
diceware 的想法是这样的, 用字母数字和标点组合的密码实在是很难记,用简短的单词反而好记。diceware.com 提供了一个66666个单词的列表, 每 个单词用数字标上序号, 然后你用骰子连掷5次得到一个数字, 比如 12345, 然后就在表中查到相应的单词apathy。然后再掷骰子5次,得到第 二个单词, 你自己决定要几个单词,一般推荐是6个单词以上。 这样就得到一个长达20个字母的密码。 虽然看上去这跟我们的“常识”相反:不是说不要用 字典里的单词吗,这说的是只用一个单词的情况。 但即使黑客知道你在使用diceware,要算出你的密码也是很困难的, 比如用6个单词,就有 66666^6种可能,比一般的短密码要可靠,而且好记。
上面這個比較清楚一點,
先擲一個均勻的骰子5次得到一個長度為5的整數, 每個整數在對應到一個單字簿上可以得到一個單詞, 如果不夠常, 在多坐幾次.
像這樣吧 我猜 顆
骰子擲五次 -> 12345
f(12345) -> apathy
但是以上面的說法, 應該只有5^5種方法阿...
至於登入網站的密碼長度限制, 反正太少就多做幾次就好,
網站底下在Q&A種也提到
差别是diceware 生成的單詞的目的有兩個:
第一整個password要夠長
第二單詞要比隨機的字母组合好記
但是第二點來看, 比隨機好記就是不夠隨機,
所以還是一樣有優點有缺點的.
說一個小女孩利用diceware 產了密碼來賣人,
一組密碼 每個 2 美元.
理面對於 Diceware 解釋是講
Diceware 是一個有著幾十年曆史的生成密碼的方式。它的操作方法是擲六個面的骰子來隨機生成數字,數字會對應一串字符。這些字合併成一個無意義的字符串(大概像這樣 ample banal bias delta gist latex),因為是隨機的所以非常難破解。不過這個口令對人們來說又很容易記住。
有點不太知道在講啥, 所以另外查了一下資料
https://www.v2ex.com/t/106491
diceware 的想法是这样的, 用字母数字和标点组合的密码实在是很难记,用简短的单词反而好记。diceware.com 提供了一个66666个单词的列表, 每 个单词用数字标上序号, 然后你用骰子连掷5次得到一个数字, 比如 12345, 然后就在表中查到相应的单词apathy。然后再掷骰子5次,得到第 二个单词, 你自己决定要几个单词,一般推荐是6个单词以上。 这样就得到一个长达20个字母的密码。 虽然看上去这跟我们的“常识”相反:不是说不要用 字典里的单词吗,这说的是只用一个单词的情况。 但即使黑客知道你在使用diceware,要算出你的密码也是很困难的, 比如用6个单词,就有 66666^6种可能,比一般的短密码要可靠,而且好记。
上面這個比較清楚一點,
先擲一個均勻的骰子5次得到一個長度為5的整數, 每個整數在對應到一個單字簿上可以得到一個單詞, 如果不夠常, 在多坐幾次.
像這樣吧 我猜 顆
骰子擲五次 -> 12345
f(12345) -> apathy
但是以上面的說法, 應該只有5^5種方法阿...
至於登入網站的密碼長度限制, 反正太少就多做幾次就好,
網站底下在Q&A種也提到
差别是diceware 生成的單詞的目的有兩個:
第一整個password要夠長
第二單詞要比隨機的字母组合好記
但是第二點來看, 比隨機好記就是不夠隨機,
所以還是一樣有優點有缺點的.
[Java] GUI 圖形化界面 Dialog1
GUI Graphical User Interface
用對話框 dialog boxes (dialog) 顯示資料.
通常是用來顯示重要訊息用.
JOptionPane 是一個已經有簡略且完整的 dialog 類別
JOptionPane 是 javax.swing套件中的類別.
javax.swing套件中包含了許多建構 GUI 應用程式的類別.
//Fig. 3.17:Dialog1
import javax.swing.JOptionPane; //import class JOptionPane
public class Dialog1{
public static void main(String args[]){
JOptionPane.showMessageDialog(null,"AS");
} //end main
} // end Dialog1
JOptionPane類別中的showMessageDialog方法是一個(static method),
所以User不用自行呼叫函式,
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
現在分兩部分, 輸入跟輸出分開,
輸入畫面稱為 input dialog 輸入對話框, 讓User輸入資料.
JOptionPane類別的 showInputDialog() 方法會顯示使用者輸入文字的欄位,
而 showInputDialog() 的引數就是要在對話框中顯示的提示詞,
一般用來告知使用者要輸入的資料.
其中在對話框中 User 所輸入的就是一串字元, 所以不是整數歐 !
然後以字串方式傳回, 並儲存在 name 變數中.
其中如果最後按下的鍵為 取消 Cancel button 則會以 null 回傳.
之後用 String 類別的 format() 靜態方法,
回傳經過格式化的字串, 而非顯示在 cmd 中.
//Fig. 3.17:NameDialog
import javax.swing.JOptionPane;
public class NameDialog{
public static void main(String args[]){
String name = JOptionPane.showInputDialog("Name: ");
System.out.println("name: "+name);
String message = String.format("Welcome, %s, to me",name);
System.out.println("message: "+message);
JOptionPane.showMessageDialog(null,message);
}
}
----------------------------------------------------------------------------------------------------
在輸入時打入 HW 顯示畫面
在裡面加了兩行 System.out.,println
name: GGGG
message: Welcome, GGGG, to me
----------------------------------------------------------------------------------------------------
如果把
String message = String.format("Welcome, %s, to me",name);
換成
int message = String.format("Welcome, %s, to me",name);
就會跑出例外出來
NameDialog.java:7: incompatible types
found : java.lang.String
required: int
int num = JOptionPane.showInputDialog("num: ");
^
Because showInputDialog just return type of string.
所以要利用轉型, 把字串轉型成整數型態,
Integer.parseInt(String s)
parseInt() 方法是一個 String 類別的靜態方法,
其中如果給了一個不是整數的字串,
就會發生例外錯誤.
以下是小小修改的範例:
import javax.swing.JOptionPane;
public class NameDialog{
public static void main(String args[]){
String name = JOptionPane.showInputDialog("Name: ");
System.out.println("name: "+name);
String old = JOptionPane.showInputDialog("oldnum : ");
int oldnum = Integer.parseInt(old);
System.out.println("oldnum: "+oldnum);
String message = String.format("Welcome, %s, to me\n You are %d year old",name,oldnum);
System.out.println("message: "+message);
JOptionPane.showMessageDialog(null,message);
}
}
如果 old 不是給整數, parseInt() 會跳出例外訊息.
name: A
Exception in thread "main" java.lang.NumberFormatException: For input string: "A
"
at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at NameDialog.main(NameDialog.java:8)
參考Java 程式設計藝術
用對話框 dialog boxes (dialog) 顯示資料.
通常是用來顯示重要訊息用.
JOptionPane 是一個已經有簡略且完整的 dialog 類別
JOptionPane 是 javax.swing套件中的類別.
javax.swing套件中包含了許多建構 GUI 應用程式的類別.
//Fig. 3.17:Dialog1
import javax.swing.JOptionPane; //import class JOptionPane
public class Dialog1{
public static void main(String args[]){
JOptionPane.showMessageDialog(null,"AS");
} //end main
} // end Dialog1
JOptionPane類別中的showMessageDialog方法是一個(static method),
所以User不用自行呼叫函式,
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
現在分兩部分, 輸入跟輸出分開,
輸入畫面稱為 input dialog 輸入對話框, 讓User輸入資料.
JOptionPane類別的 showInputDialog() 方法會顯示使用者輸入文字的欄位,
而 showInputDialog() 的引數就是要在對話框中顯示的提示詞,
一般用來告知使用者要輸入的資料.
其中在對話框中 User 所輸入的就是一串字元, 所以不是整數歐 !
然後以字串方式傳回, 並儲存在 name 變數中.
其中如果最後按下的鍵為 取消 Cancel button 則會以 null 回傳.
之後用 String 類別的 format() 靜態方法,
回傳經過格式化的字串, 而非顯示在 cmd 中.
//Fig. 3.17:NameDialog
import javax.swing.JOptionPane;
public class NameDialog{
public static void main(String args[]){
String name = JOptionPane.showInputDialog("Name: ");
System.out.println("name: "+name);
String message = String.format("Welcome, %s, to me",name);
System.out.println("message: "+message);
JOptionPane.showMessageDialog(null,message);
}
}
----------------------------------------------------------------------------------------------------
在輸入時打入 HW 顯示畫面
在裡面加了兩行 System.out.,println
name: GGGG
message: Welcome, GGGG, to me
----------------------------------------------------------------------------------------------------
如果把
String message = String.format("Welcome, %s, to me",name);
換成
int message = String.format("Welcome, %s, to me",name);
就會跑出例外出來
NameDialog.java:7: incompatible types
found : java.lang.String
required: int
int num = JOptionPane.showInputDialog("num: ");
^
Because showInputDialog just return type of string.
所以要利用轉型, 把字串轉型成整數型態,
Integer.parseInt(String s)
parseInt() 方法是一個 String 類別的靜態方法,
其中如果給了一個不是整數的字串,
就會發生例外錯誤.
以下是小小修改的範例:
import javax.swing.JOptionPane;
public class NameDialog{
public static void main(String args[]){
String name = JOptionPane.showInputDialog("Name: ");
System.out.println("name: "+name);
String old = JOptionPane.showInputDialog("oldnum : ");
int oldnum = Integer.parseInt(old);
System.out.println("oldnum: "+oldnum);
String message = String.format("Welcome, %s, to me\n You are %d year old",name,oldnum);
System.out.println("message: "+message);
JOptionPane.showMessageDialog(null,message);
}
}
如果 old 不是給整數, parseInt() 會跳出例外訊息.
name: A
Exception in thread "main" java.lang.NumberFormatException: For input string: "A
"
at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at NameDialog.main(NameDialog.java:8)
參考Java 程式設計藝術
[Java] Ex.65
Ex.65
import java.util.*;
public class WrappedString {
private String s;
public WrappedString(String s ) {
this.s = s;
}
public static void main(String args[]){
HashSet<Object> hs = new HashSet<Object>();
WrappedString ws1 = new WrappedString("aardvark");
WrappedString ws2 = new WrappedString("aardvark");
String s1 = new String("aardvark");
String s2 = new String("aardvark");
hs.add(ws1);
hs.add(ws2);
hs.add(s1);
hs.add(s2);
System.out.print(hs.size());
}
}
---------------------------------
output is 3
---------------------------------
import java.util.*;
public class WrappedString {
private String s;
public WrappedString(String s ) {
this.s = s;
}
public static void main(String args[]){
HashSet<Object> hs = new HashSet<Object>();
WrappedString ws1 = new WrappedString("aardvark");
WrappedString ws2 = new WrappedString("aardvark");
String s1 = new String("aardvark");
String s2 = new String("aardvark");
hs.add(ws1);
hs.add(ws2);
hs.add(s1);
hs.add(s2);
System.out.print(hs.size());
}
public boolean equals(Object o){
if(this.s.equals(((WrappedString)o).s))
return true;
else
return false;
}
public int hashCode(){
return this.s.hashCode();
}
}
---------------------------------
output is 2
---------------------------------
import java.util.*;
public class WrappedString {
private String s;
public WrappedString(String s ) {
this.s = s;
}
public static void main(String args[]){
HashSet<Object> hs = new HashSet<Object>();
WrappedString ws1 = new WrappedString("aardvark");
WrappedString ws2 = new WrappedString("aardvark");
String s1 = new String("aardvark");
String s2 = new String("aardvark");
hs.add(ws1);
hs.add(ws2);
hs.add(s1);
hs.add(s2);
System.out.print(hs.size());
}
}
---------------------------------
output is 3
---------------------------------
import java.util.*;
public class WrappedString {
private String s;
public WrappedString(String s ) {
this.s = s;
}
public static void main(String args[]){
HashSet<Object> hs = new HashSet<Object>();
WrappedString ws1 = new WrappedString("aardvark");
WrappedString ws2 = new WrappedString("aardvark");
String s1 = new String("aardvark");
String s2 = new String("aardvark");
hs.add(ws1);
hs.add(ws2);
hs.add(s1);
hs.add(s2);
System.out.print(hs.size());
}
public boolean equals(Object o){
if(this.s.equals(((WrappedString)o).s))
return true;
else
return false;
}
public int hashCode(){
return this.s.hashCode();
}
}
---------------------------------
output is 2
---------------------------------
2015年10月22日 星期四
[C] 2-5: 迴圈與測試資料讀取 4 - 檔尾封 File_stern_transom.cpp
2-5: 迴圈與測試資料讀取 4 - 檔尾封
這個題目和前三題的差別在於如何指定輸入資料有幾組案例
請撰寫一個程式運用 stdio 函式庫的 scanf 和 printf 函式讀取測試資料並且計算兩數之和、整數除法的商和餘數、浮點數除法的商, 請練習下列迴圈控制
nitems = scanf(...); // 讀入 a 和 b
while (nitems==2) // 或是 nitems != EOF
{
...
nitems = scanf(...); // 讀入 a 和 b
}
請注意:
輸入測試資料:
----------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int a=1, b=1;
int nitems = scanf("%d %d%*[^\n]",&a,&b);
while (nitems!= EOF) // a 和 b 為前一列 scanf 讀入的資料
{
int add=0, div=0, mid=0;
float div2=0.0;
printf("%5d,%6d,%6d,%11.5f\n",add = a+b, div = a/b, mid = a%b, div2 = (float)a/b);
nitems = scanf("%d %d%*[^\n]",&a,&b);
}
return 0;
}
----------------------------------------------------------------
nitems!= EOF
EOF很像是-1, 而scanf輸出的值則是 一個整數,表示輸入的參數數量,
而如果使用feod可以參考
http://yume-o-tsukamu.blogspot.tw/2013/03/cfeof.html
這個題目和前三題的差別在於如何指定輸入資料有幾組案例
請撰寫一個程式運用 stdio 函式庫的 scanf 和 printf 函式讀取測試資料並且計算兩數之和、整數除法的商和餘數、浮點數除法的商, 請練習下列迴圈控制
nitems = scanf(...); // 讀入 a 和 b
while (nitems==2) // 或是 nitems != EOF
{
...
nitems = scanf(...); // 讀入 a 和 b
}
請注意:
- 下面的測試用範例中, 輸入測試資料由第一列開始, 每一列是一個案例, 包含兩個整數, 請讀入此兩個整數資料並且完成指定的運算
- 請注意觀察輸出測試資料, 程式需要輸出 n 列, 每一列是一個測試案例的測試結果, (假設 a + b = c, a / b = d, a % b = e, a / b = f) 列印的格式是每一列四個數字 c, d, e, f 以逗點和一個空格隔開, 其中 c, d, e 三個整數都列印在 5 格的欄位中, 浮點數 f 列印在 10 格的欄位中, 小數點後印 5 位數字
- 在你自己機器上測試時有兩種方法
- 執行程式 prog.exe, 輸入資料, 按 <ctrl>-Z <enter>
- 編輯一個資料檔案 test.txt, 打開 cmd.exe 視窗, 執行 prog < test.txt 或是 cat test.txt | prog
- 另外你也可以練習運用 stdio 的 feof(stdin) 函式測試輸入是否已經結束, 試試看能不能來取代 while (nitems==2) 的測試, 如果執行前一個輸入指令時發現串流已經結束, 接下來的 feof() 函式會回傳 1 代表串流已經結束, 在你自己的機器應該是可以運作的, 不過因為 e-Tutor 是線上的測試系統, 他不接受檔案操作的相關命令, 例如 fopen, fclose, fflush 所以 feof 有可能也不接受
輸入測試資料:
73 56↵
28 27↵
185 30↵
1412 345↵
210 -75↵
-3123 -4215↵
-4703 1014↵
輸出測試資料:129, 1, 17, 1.30357↵ 55, 1, 1, 1.03704↵ 215, 6, 5, 6.16667↵ 1757, 4, 32, 4.09275↵ 135, -2, 60, -2.80000↵ -7338, 0, -3123, 0.74093↵ -3689, -4, -647, -4.63807↵
----------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int a=1, b=1;
int nitems = scanf("%d %d%*[^\n]",&a,&b);
while (nitems!= EOF) // a 和 b 為前一列 scanf 讀入的資料
{
int add=0, div=0, mid=0;
float div2=0.0;
printf("%5d,%6d,%6d,%11.5f\n",add = a+b, div = a/b, mid = a%b, div2 = (float)a/b);
nitems = scanf("%d %d%*[^\n]",&a,&b);
}
return 0;
}
----------------------------------------------------------------
nitems!= EOF
EOF很像是-1, 而scanf輸出的值則是 一個整數,表示輸入的參數數量,
而如果使用feod可以參考
http://yume-o-tsukamu.blogspot.tw/2013/03/cfeof.html
2015年10月21日 星期三
[C] 2-4: 迴圈與測試資料讀取 3 - 零尾封 Zero_tail_closure.cpp
2-4: 迴圈與測試資料讀取 3 - 零尾封
這個題目和前兩題的差別在於如何指定輸入資料有幾組案例
請撰寫一個程式運用 stdio 函式庫的 scanf 和 printf 函式讀取測試資料並且計算兩數之和、整數除法的商和餘數、浮點數除法的商, 請練習下列迴圈控制
scanf(...); // 讀入 a 和 b
while (!((a==0)&&(b==0))) // a 和 b 為前一列 scanf 讀入的資料
{
...
scanf(...); // 讀入 a 和 b
}
請注意:
輸入測試資料:
---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int a=1, b=1;
scanf("%d %d%*[^\n]",&a,&b);
while (!((a==0)&&(b==0))) // a 和 b 為前一列 scanf 讀入的資料
{
int add=0, div=0, mid=0;
float div2=0.0;
printf("%5d,%6d,%6d,%11.5f\n",
add = a+b, div = a/b, mid = a%b, div2 = (float)a/b);
scanf("%d %d%*[^\n]",&a,&b);
}
return 0;
}
---------------------------------------------------------------------------
要說要注的東西應該是scanf放置位置吧
http://140.116.249.152/e-Tutor/mod/programming/view.php?a=12711
這個題目和前兩題的差別在於如何指定輸入資料有幾組案例
請撰寫一個程式運用 stdio 函式庫的 scanf 和 printf 函式讀取測試資料並且計算兩數之和、整數除法的商和餘數、浮點數除法的商, 請練習下列迴圈控制
scanf(...); // 讀入 a 和 b
while (!((a==0)&&(b==0))) // a 和 b 為前一列 scanf 讀入的資料
{
...
scanf(...); // 讀入 a 和 b
}
請注意:
- 下面的測試用範例中, 輸入測試資料由第一列開始, 每一列是一個案例, 包含兩個整數, 請讀入此兩個整數資料並且完成指定的運算
- 最後一列不是測試案例, 兩個整數 0 0 代表測試案例的結束
- 請注意觀察輸出測試資料, 程式需要輸出 n 列, 每一列是一個測試案例的測試結果, (假設 a + b = c, a / b = d, a % b = e, a / b = f) 列印的格式是每一列四個數字 c, d, e, f 以逗點和一個空格隔開, 其中 c, d, e 三個整數都列印在 5 格的欄位中, 浮點數 f 列印在 10 格的欄位中, 小數點後印 5 位數字
輸入測試資料:
73 56↵
28 27↵
185 30↵
1412 345↵
210 -75↵
-3123 -4215↵
-4703 1014↵
0 0↵
輸出測試資料:129, 1, 17, 1.30357↵ 55, 1, 1, 1.03704↵ 215, 6, 5, 6.16667↵ 1757, 4, 32, 4.09275↵ 135, -2, 60, -2.80000↵ -7338, 0, -3123, 0.74093↵ -3689, -4, -647, -4.63807↵
---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int a=1, b=1;
scanf("%d %d%*[^\n]",&a,&b);
while (!((a==0)&&(b==0))) // a 和 b 為前一列 scanf 讀入的資料
{
int add=0, div=0, mid=0;
float div2=0.0;
printf("%5d,%6d,%6d,%11.5f\n",
add = a+b, div = a/b, mid = a%b, div2 = (float)a/b);
scanf("%d %d%*[^\n]",&a,&b);
}
return 0;
}
---------------------------------------------------------------------------
要說要注的東西應該是scanf放置位置吧
http://140.116.249.152/e-Tutor/mod/programming/view.php?a=12711
[C] 2-3: 迴圈與測試資料讀取 2 - 起手數 Number_of_hands_2.cpp
這個題目基本上和前一題幾乎是一樣的, 唯一不一樣的地方是輸入資料的格式, 每一列的兩個整數資料之後一直到那一列的結尾是一些說明文字 (很多時候輸入資料和撰寫程式是不同的人, 輸入資料可能是用一個編輯器直接編輯檔案, 這個時候如果只有一堆數字, 很容易輸入錯誤, 所以常常在製作資料檔案的時候希望檔案裡有一些額外的說明文字, 可以使得人可以比較輕鬆地檢查資料), 這些說明文字是你的程式需要運用 scanf 的功能 跳過去不要處理的
請撰寫一個程式運用 stdio 函式庫的 scanf 和 printf 函式讀取測試資料並且計算兩數之和、整數除法的商和餘數、浮點數除法的商, 請練習下面的迴圈控制
scanf(...); // 讀取案例個數至整數變數 n
for (i=0; i<n; i++)
{
...
}
請注意:
下面的測試用範例中, 輸入測試資料的第一列為一個整數 n, 代表接下來有 n 個測試案例
每一列是一個案例, 包含兩個整數, 請讀入此兩個整數資料並且完成指定的運算, 這兩個數字之後一直到這一列的結束是程式不需要的註解
請注意觀察輸出測試資料, 程式需要輸出 n 列, 每一列是一個測試案例的測試結果, (假設 a + b = c, a / b = d, a % b = e, a / b = f) 列印的格式是每一列四個數字 c, d, e, f 以逗點和一個空格隔開, 其中 c, d, e 三個整數都列印在 5 格的欄位中, 浮點數 f 列印在 10 格的欄位中, 小數點後印 5 位數字
輸入測試資料:
請撰寫一個程式運用 stdio 函式庫的 scanf 和 printf 函式讀取測試資料並且計算兩數之和、整數除法的商和餘數、浮點數除法的商, 請練習下面的迴圈控制
scanf(...); // 讀取案例個數至整數變數 n
for (i=0; i<n; i++)
{
...
}
請注意:
下面的測試用範例中, 輸入測試資料的第一列為一個整數 n, 代表接下來有 n 個測試案例
每一列是一個案例, 包含兩個整數, 請讀入此兩個整數資料並且完成指定的運算, 這兩個數字之後一直到這一列的結束是程式不需要的註解
請注意觀察輸出測試資料, 程式需要輸出 n 列, 每一列是一個測試案例的測試結果, (假設 a + b = c, a / b = d, a % b = e, a / b = f) 列印的格式是每一列四個數字 c, d, e, f 以逗點和一個空格隔開, 其中 c, d, e 三個整數都列印在 5 格的欄位中, 浮點數 f 列印在 10 格的欄位中, 小數點後印 5 位數字
輸入測試資料:
7↵
73 56 this the first set of data↵
28 27 這是第二組測試案例↵
185 30the third↵
1412 345 )*&^&(^ (*&^↵
210 -75↵
-3123 -4215 both negative↵
-4703 1014↵
輸出測試資料:129, 1, 17, 1.30357↵ 55, 1, 1, 1.03704↵ 215, 6, 5, 6.16667↵ 1757, 4, 32, 4.09275↵ 135, -2, 60, -2.80000↵ -7338, 0, -3123, 0.74093↵ -3689, -4, -647, -4.63807↵
----------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int n, i, a, b;
scanf("%d",&n);
for(i = 0 ; i < n ; i++){
scanf("%d %d%*[^\n]",&a,&b);
int add=0, div=0, mid=0;
float div2=0.0;
printf("%5d,%6d,%6d,%11.5f",add = a+b, div = a/b, mid = a%b, div2 = (float)a/b);
printf("\n");
}
return 0;
}
----------------------------------------------------
這裡比較特別的式正規表示法,
scanf("%d %d%*[^\n]",&a,&b);
中的 %*[^\n] 表示從前一個輸入之後到換行符號出線為止都不列入input中.
[C] 2-2: 迴圈與測試資料讀取 1 - 起手數 Number_of_hands
請撰寫一個程式運用 stdio 函式庫的 scanf 和 printf 函式讀取測試資料並且計算兩數之和、整數除法的商和餘數、浮點數除法的商, 請練習下面的迴圈控制
scanf(...); // 讀取案例個數至整數變數 n for (i=0; i<n; i++) { ... }
- 下面的測試用範例中, 輸入測試資料的第一列為一個整數 n, 代表接下來有 n 個測試案例
- 每一列是一個案例, 包含兩個整數, 請讀入此兩個整數資料並且完成指定的運算
- 請注意觀察輸出測試資料, 程式需要輸出 n 列, 每一列是一個測試案例的測試結果, (假設 a + b = c, a / b = d, a % b = e, a / b = f) 列印的格式是每一列四個數字 c, d, e, f 以逗點和一個空格隔開, 其中 c, d, e 三個整數都列印在 5 格的欄位中, 浮點數 f 列印在 10 格的欄位中, 小數點後印 5 位數字
- 請特別注意觀察整數除法 a / b 和餘數 a % b 在 a 或是 b 為負數時的結果
- 因為開始練習迴圈, 提交程式就有限定執行時間, 否則萬一你的迴圈不結束, 就很浪費系統資源了
7↵
73 56↵
28 27↵
185 30↵
1412 345↵
210 -75↵
-3123 -4215↵
-4703 1014↵
輸出測試資料:129, 1, 17, 1.30357↵ 55, 1, 1, 1.03704↵ 215, 6, 5, 6.16667↵ 1757, 4, 32, 4.09275↵ 135, -2, 60, -2.80000↵ -7338, 0, -3123, 0.74093↵ -3689, -4, -647, -4.63807↵
------------------------------------------------------------
Number_of_hands.cpp
#include <stdio.h> #include <stdlib.h> int main(void) { int n, i, a, b; scanf("%d",&n); for(i = 0 ; i < n ; i++){ scanf("%d%d",&a,&b); int add=0, div=0, mid=0; float div2=0.0; printf("%5d,%6d,%6d,%11.5f\n",add = a+b, div = a/b, mid = a%b, div2 = (float)a/b); } return 0; }
------------------------------------------------------------
該注意的就是, 第一筆資料後的小數點位置,
因為會把前一個數字的 "," 算進去, 所以後面顯示的時候要多加一位才可以.
題目來源
http://140.116.249.152/e-Tutor/mod/programming/submit.php?a=12709
[Java] 移動檔案
日常生活中的小小實做,
依照日期把檔案分類到專屬的資料夾中.
程式很簡單但是卻寫了一整天 = = ,
分三部分, 第一部分 main 就是定資料夾, 在用第二部分的 print 印出來,
印的同時利用第三部分 settime 把每個檔案的建立時間顯示出來, 以方便做比較,
在比較建造日期後, 比對成功就呼叫第四部分, 把檔案移至對應的資料夾中.
可以在改進的地方應該是,
1. 把輸入目前路徑, 目標路徑, 單獨列出讓使用者好修改
2. 日期借面 A日到B日的檔案坐轉移
3. 函式寫得很醜, 可以在改進囉~
import java.io.*;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class File_mvoe_2{
public static void main(String args[])throws IOException{
String path = "M:\\FTP";
File f = new File(path);
print(f,1,path);
}
private static void print(File f, int level,String path){
String pl = "";
for(int i = 0 ; i < level ; i++){
pl +="\t";
}
File[] child = f.listFiles();
for(int i = 0; i < child.length ; i++){
String s = child[i].getName();
settime(path,s);
if(child[i].isDirectory()){
path = path +"\\"+ child[i].getName();
print(child[i], level+1, path);
}
}
}
private static void settime(String inputpath, String name){
try{
File file = new File(inputpath+"\\"+name);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(file.lastModified());
Path path = Paths.get(inputpath+"\\"+name);
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
c.setTimeInMillis(attrs.creationTime().toMillis());
String da = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
//System.out.println("DA: "+da);
int i = 0;
if(da.equals("2015-10-21") ){
move(inputpath, name, i);
}
}catch(IOException e){
e.printStackTrace();
}
}
private static void move(String inputpath, String name, int i ){
File source = null;
File destFile = null;
File directory = null;
boolean rt = false;
try{
source = new File(inputpath+"\\"+name);
String Target = "M:\\ftp TMP\\08.21";
directory = new File(Target);
if(!directory.isDirectory()){
directory.mkdirs();
}
destFile = new File(Target+"\\"+name);
rt = source.renameTo(destFile);
//System.out.println("rt: "+rt+" : "+name);
}catch(Exception e){
}
}
}
參考資料:
顯示基本資料
http://bioankeyang.blogspot.tw/2015/01/java.html
顯示資料夾資料
http://ced425.pixnet.net/blog/post/3368206-java.io.file%E9%A1%9E%E7%B7%B4%E7%BF%92
移動資料
http://blog.csdn.net/lfdfhl/article/details/8302605
這是比較簡單的檔案移動程式
import java.io.*;
public class File_mvoe{
public static void main(String args[]){
File source = null; // 想要移動的檔案
File directory = null; // 想要移動到的目的地資料夾
File destFile = null; // 移動過去的資料夾路徑+檔案名稱(可以自取)
boolean rt = false;
try{
source = new File("M:\\A\\DCS-9202009010502073601.jpg");
directory = new File("M:\\B");
destFile = new File("M:\\B\\DCS-9202009010502073601.jpg");
//判斷目標資料夾是否存在, 不存在就建立新的
if (directory.isDirectory()) {
System.out.println("Directory is exist.");
}else{
directory.mkdirs();
System.out.println("Directory is not exist, so creat .");
}
// 要移動的檔案是不是存在
if(source.exists()){
System.out.println("File is exists");
}else{
System.out.println("File is not exists");
}
// 用rename 方法移動檔案, 會回傳booblean 回去, 才知道是不是有移動成功
rt = source.renameTo(destFile);
System.out.println("File renamed: "+ rt);
}catch(Exception e){
e.printStackTrace();
}
}
}
依照日期把檔案分類到專屬的資料夾中.
程式很簡單但是卻寫了一整天 = = ,
分三部分, 第一部分 main 就是定資料夾, 在用第二部分的 print 印出來,
印的同時利用第三部分 settime 把每個檔案的建立時間顯示出來, 以方便做比較,
在比較建造日期後, 比對成功就呼叫第四部分, 把檔案移至對應的資料夾中.
可以在改進的地方應該是,
1. 把輸入目前路徑, 目標路徑, 單獨列出讓使用者好修改
2. 日期借面 A日到B日的檔案坐轉移
3. 函式寫得很醜, 可以在改進囉~
import java.io.*;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class File_mvoe_2{
public static void main(String args[])throws IOException{
String path = "M:\\FTP";
File f = new File(path);
print(f,1,path);
}
private static void print(File f, int level,String path){
String pl = "";
for(int i = 0 ; i < level ; i++){
pl +="\t";
}
File[] child = f.listFiles();
for(int i = 0; i < child.length ; i++){
String s = child[i].getName();
settime(path,s);
if(child[i].isDirectory()){
path = path +"\\"+ child[i].getName();
print(child[i], level+1, path);
}
}
}
private static void settime(String inputpath, String name){
try{
File file = new File(inputpath+"\\"+name);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(file.lastModified());
Path path = Paths.get(inputpath+"\\"+name);
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
c.setTimeInMillis(attrs.creationTime().toMillis());
String da = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
//System.out.println("DA: "+da);
int i = 0;
if(da.equals("2015-10-21") ){
move(inputpath, name, i);
}
}catch(IOException e){
e.printStackTrace();
}
}
private static void move(String inputpath, String name, int i ){
File source = null;
File destFile = null;
File directory = null;
boolean rt = false;
try{
source = new File(inputpath+"\\"+name);
String Target = "M:\\ftp TMP\\08.21";
directory = new File(Target);
if(!directory.isDirectory()){
directory.mkdirs();
}
destFile = new File(Target+"\\"+name);
rt = source.renameTo(destFile);
//System.out.println("rt: "+rt+" : "+name);
}catch(Exception e){
}
}
}
參考資料:
顯示基本資料
http://bioankeyang.blogspot.tw/2015/01/java.html
顯示資料夾資料
http://ced425.pixnet.net/blog/post/3368206-java.io.file%E9%A1%9E%E7%B7%B4%E7%BF%92
移動資料
http://blog.csdn.net/lfdfhl/article/details/8302605
這是比較簡單的檔案移動程式
import java.io.*;
public class File_mvoe{
public static void main(String args[]){
File source = null; // 想要移動的檔案
File directory = null; // 想要移動到的目的地資料夾
File destFile = null; // 移動過去的資料夾路徑+檔案名稱(可以自取)
boolean rt = false;
try{
source = new File("M:\\A\\DCS-9202009010502073601.jpg");
directory = new File("M:\\B");
destFile = new File("M:\\B\\DCS-9202009010502073601.jpg");
//判斷目標資料夾是否存在, 不存在就建立新的
if (directory.isDirectory()) {
System.out.println("Directory is exist.");
}else{
directory.mkdirs();
System.out.println("Directory is not exist, so creat .");
}
// 要移動的檔案是不是存在
if(source.exists()){
System.out.println("File is exists");
}else{
System.out.println("File is not exists");
}
// 用rename 方法移動檔案, 會回傳booblean 回去, 才知道是不是有移動成功
rt = source.renameTo(destFile);
System.out.println("File renamed: "+ rt);
}catch(Exception e){
e.printStackTrace();
}
}
}
[Java] 顯示指定資料夾下的檔案和資料夾
參考資料:
http://ced425.pixnet.net/blog/post/3368206-java.io.file%E9%A1%9E%E7%B7%B4%E7%BF%92
import java.io.*;
public class File_Print{
public static void main(String args[]){
File f = new File("c:\\Documents");
System.out.print("Directory Name: "+f.getName()+"\n");
print(f,1);
}
private static void print(File f, int level){
String pl = "";
for(int i = 0 ; i < level ; i++){
pl +="\t";
}
File[] child = f.listFiles();
for(int i = 0; i < child.length ; i++){
String s = child[i].getName();
System.out.println(pl+" ("+s+")");
if(s.equals("a.java")){
File fc = child[i];
File toFile = new File("C:\\Documents\\abcd"+"\\"+"child[i].getName()");
fc.renameTo(toFile);
System.out.println("-------------------------------------------------");
}
if(child[i].isDirectory()){
System.out.print("*");
print(child[i], level+1);
}
}
}
}
http://ced425.pixnet.net/blog/post/3368206-java.io.file%E9%A1%9E%E7%B7%B4%E7%BF%92
import java.io.*;
public class File_Print{
public static void main(String args[]){
File f = new File("c:\\Documents");
System.out.print("Directory Name: "+f.getName()+"\n");
print(f,1);
}
private static void print(File f, int level){
String pl = "";
for(int i = 0 ; i < level ; i++){
pl +="\t";
}
File[] child = f.listFiles();
for(int i = 0; i < child.length ; i++){
String s = child[i].getName();
System.out.println(pl+" ("+s+")");
if(s.equals("a.java")){
File fc = child[i];
File toFile = new File("C:\\Documents\\abcd"+"\\"+"child[i].getName()");
fc.renameTo(toFile);
System.out.println("-------------------------------------------------");
}
if(child[i].isDirectory()){
System.out.print("*");
print(child[i], level+1);
}
}
}
}
[Java] File_move 檔案移動
import java.io.*;
public class File_mvoe{
public static void main(String args[]){
File source = null;
File directory = null;
File destFile = null;
boolean rt = false;
try{
source = new File("c:\\Documents\\abcda\\803_009_5jg.jpg");
directory = new File("c:\\Documents\\abcda\\phone");
destFile = new File("c:\\Documents\\abcda\\phone\\803_009_5jg.jpg");
//判斷資料夾是否存在, 不在則新增一個
if (directory.isDirectory()) {
System.out.println("Directory is exist.");
}else{
directory.mkdirs();
System.out.println("Directory is not exist, so creat .");
}
//判斷要移動的檔案是否存在
if(source.exists()){
System.out.println("File is exists");
}else{
System.out.println("File is not exists");
}
// 用rename移動檔案, 移動結果會回傳一個boolean值
rt = source.renameTo(destFile);
System.out.println("File renamed: "+ rt);
}catch(Exception e){
e.printStackTrace();
}
}
}
source = new File("c:\\Documents\\abcda\\803_009_5jg.jpg");
要移動的檔案, 連同路徑一起寫入
directory = new File("c:\\Documents\\abcda\\phone");
要移至的資料夾 , 以便接下來判斷資料夾是否存在
destFile = new File("c:\\Documents\\abcda\\phone\\803_009_5jg.jpg");
要移入的資料夾, 檔案名稱要相同, 路徑一樣要寫上
public class File_mvoe{
public static void main(String args[]){
File source = null;
File directory = null;
File destFile = null;
boolean rt = false;
try{
source = new File("c:\\Documents\\abcda\\803_009_5jg.jpg");
directory = new File("c:\\Documents\\abcda\\phone");
destFile = new File("c:\\Documents\\abcda\\phone\\803_009_5jg.jpg");
//判斷資料夾是否存在, 不在則新增一個
if (directory.isDirectory()) {
System.out.println("Directory is exist.");
}else{
directory.mkdirs();
System.out.println("Directory is not exist, so creat .");
}
//判斷要移動的檔案是否存在
if(source.exists()){
System.out.println("File is exists");
}else{
System.out.println("File is not exists");
}
// 用rename移動檔案, 移動結果會回傳一個boolean值
rt = source.renameTo(destFile);
System.out.println("File renamed: "+ rt);
}catch(Exception e){
e.printStackTrace();
}
}
}
source = new File("c:\\Documents\\abcda\\803_009_5jg.jpg");
要移動的檔案, 連同路徑一起寫入
directory = new File("c:\\Documents\\abcda\\phone");
要移至的資料夾 , 以便接下來判斷資料夾是否存在
destFile = new File("c:\\Documents\\abcda\\phone\\803_009_5jg.jpg");
要移入的資料夾, 檔案名稱要相同, 路徑一樣要寫上
訂閱:
文章 (Atom)