3D打印機(jī)使用數(shù)控G指令代碼控制步進(jìn)電機(jī)或伺服電機(jī),控制軟件Repetier使用了JAVA和python。分層軟件有的使用了Perl。不同的軟件使用了不同的編程語言
我們提供的服務(wù)有:做網(wǎng)站、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、番禺ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的番禺網(wǎng)站制作公司
如一樓所說,你的jsp源文件的java代碼是在服務(wù)器上執(zhí)行的,客戶端接收到的只有html
用JavaScript打印吧
input
id="btnPrint"
type="button"
value="打印"
onclick="javascript:window.print();"
/
可以用樣式控制,你想讓那塊打印就打印啊,樣式如下:
style
type="text/css"
media=print
.noprint{display
:
none
}
/style
然后使用樣式就可以:
p
class="noprint"不需要打印的地方/p
這里直接把s賦值給readContent是有問題的,問題點(diǎn)如下:
假設(shè)文件有兩行
第一行
第二行
則讀取循環(huán)兩次,第一次s賦值給readContent,readContent的值為 "第一行",然后又循環(huán),讀取第二行,再次賦值,則readContent就會(huì)變成 "第二行",第一行的值就丟失了;
這里StringBuff的作用是把讀取到的內(nèi)容連接起來成為一個(gè)字符串;
不過這里的例子的確有問題,問題卻不在StringBuffer上,而在 s 變量上,s中間兩步是不必要的,循環(huán)內(nèi)直接改成如下形式:
刪除s.getBytes()和new String
另外,除了以上問題,來總結(jié)下這段代碼的問題吧:
1、文件資源沒有釋放
2、在不涉及多線程的情況下,應(yīng)使用StringBuilder類進(jìn)行字符串拼接,而不是StringBuffer,因?yàn)镾tringBuilder更快(但是StringBuilder線程不安全,StringBuffer線程安全);
3、異常處理有問題,如果出現(xiàn)IO異常,就返回異常信息的字符串?那么如何區(qū)分這個(gè)字符串是發(fā)生了異常還是從文件中讀取到的內(nèi)容呢?這里不應(yīng)該返回字符串,而是直接聲明異常,有異常就向外拋,直到能處理的頂層程序處理。
基于以上幾點(diǎn),修改代碼如下:
注意第27行,聲明本方法可能拋出 IOException 異常,稍后主程序?qū)⑦M(jìn)行處理。另外注意第30行,創(chuàng)建InputStreamReader 的時(shí)候指定了文件編碼為utf8,以避免亂碼,你的文件如果存儲(chǔ)的是其他編碼類型,則會(huì)出現(xiàn)亂碼。
調(diào)用代碼如下:
getContent函數(shù)調(diào)用主程序
注意18行和21行,是分別處理正常情況和異常情況,當(dāng)讀取異常時(shí),將會(huì)調(diào)用第21行,打印異常信息;
整體代碼如下:
全部代碼
接下來我們看看代碼執(zhí)行情況。
1、當(dāng)我們要讀的文件不存在時(shí),執(zhí)行結(jié)果如下:
我們要讀的文件不存在時(shí),拋出異常
看,當(dāng)文件不存在時(shí),拋出異常,并由異常處理程序捕獲和打印,你可以看到具體哪一行代碼出錯(cuò)[getContent(App.java:29)],說明在App.java 文件中的getContent方法,文件的29行出錯(cuò)。
2、那么正常情況下呢?當(dāng)然是輸出文件內(nèi)容了,我們放一個(gè)有如下內(nèi)容的文件在"D:\\file.txt"處:
要讀取的文件內(nèi)容
執(zhí)行結(jié)果如下:
正常情況下,輸出文件內(nèi)容
最后,我不知道你看的是什么書,是不是課本,但感覺質(zhì)量不高,這里給你推薦幾本,可以買來看看:
1、Head First java
2、菜鳥教程 Java
3、最權(quán)威的,自然是The Java? Language Specificati了
祝你學(xué)習(xí)之路順利
選B。結(jié)果輸出為2.1、在main()函數(shù)中Test test = new Test();ArrayList al = new ArrayList();al.add(1);截止這里,al里面有一個(gè)數(shù)據(jù)1。al是屬于main()函數(shù)中的ArrayList對(duì)象的引用.2、到了static void print(ArrayList al) {//你在這里定義的al是屬于print的變量,只是與main()函數(shù)中的alal.add(2); //有同一個(gè)引用,到這里al里面值為【1,2】al = new ArrayList();//這時(shí),你在print函數(shù)中又創(chuàng)建一個(gè)對(duì)象,把這個(gè)對(duì)象的引用給al,但是main()函al.add(3); //數(shù)中的al的引用與這里沒有任何關(guān)系al.add(4);//當(dāng)執(zhí)行完al.add(4)結(jié)束,那么print()方法中的al,在某個(gè)時(shí)刻會(huì)被垃圾回收機(jī)制自動(dòng)清除//main()函數(shù)中al的還存在} 接著打印al.get(1),那么結(jié)果就為2. 希望我的回答對(duì)你有幫助!