概述
元寶網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)公司從2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
java程序輸入需要用到Scanner工具類,輸出則使用println
解析
1、輸入:
從鍵盤輸入需要用到j(luò)ava的Scanner這個util包下的工具類
Scanner中輸入是需要對輸入的字符進(jìn)行分類,int類型為nextint()方法,double類型為nextDouble()方法,字符串類型為next()方法。
#code:
#out:
2、輸出:
java常用的輸出為println
#code:
#out:
除了println()方法之外,java還有print()和printf()兩種輸出方法,
print、println、printf的區(qū)別:
print--是函數(shù),可以返回一個值,只能有一個參數(shù)。
println 將它的參數(shù)顯示在命令窗口,并在結(jié)尾加上換行符,將輸出光標(biāo)定位在下一行的開始。
printf--函數(shù),把文字格式化以后輸出,直接調(diào)用系統(tǒng)調(diào)用進(jìn)行IO的,他是非緩沖的。
拓展內(nèi)容
java 輸入輸出流(I/O)
Java中I/O操作主要是指使用Java進(jìn)行輸入,輸出操作.?Java所有的I/O機(jī)制都是基于數(shù)據(jù)流進(jìn)行輸入輸出,這些數(shù)據(jù)流表示了字符或者字節(jié)數(shù)據(jù)的流動序列。Java的I/O流提供了讀寫數(shù)據(jù)的標(biāo)準(zhǔn)方法。任何Java中表示數(shù)據(jù)源的對象都會提供以數(shù)據(jù)流的方式讀寫它的數(shù)據(jù)的方法。
Java.io是大多數(shù)面向數(shù)據(jù)流的輸入/輸出類的主要軟件包。此外,Java也對塊傳輸提供支持,在核心庫 java.nio中采用的便是塊IO。
流IO的好處是簡單易用,缺點(diǎn)是效率較低。塊IO效率很高,但編程比較復(fù)雜。
Java IO模型 ?:
Java的IO模型設(shè)計非常優(yōu)秀,它使用Decorator模式,按功能劃分Stream,您可以動態(tài)裝配這些Stream,以便獲得您需要的功能。例如,您需要一個具有緩沖的文件輸入流,則應(yīng)當(dāng)組合使用FileInputStream和BufferedInputStream。
輸入流(Input ?Stream):
程序從輸入流讀取數(shù)據(jù)源。數(shù)據(jù)源包括外界(鍵盤、文件、網(wǎng)絡(luò)…),即是將數(shù)據(jù)源讀入到程序的通信通道。
輸出流(output Stream):
程序向輸出流寫入數(shù)據(jù)。將程序中的數(shù)據(jù)輸出到外界(顯示器、打印機(jī)、文件、網(wǎng)絡(luò)…)的通信通道。
Java代碼之于java程序員而言就是左膀右臂,java代碼寫的好的java程序員明顯更是企業(yè)的歡迎,一個優(yōu)秀的java程序員的考核標(biāo)準(zhǔn)之一也是看他的編程水平。
其實(shí)有的java程序員java代碼會受到大家的追捧,是因?yàn)樗趯懘a時注意的細(xì)節(jié)往往多于那些不怎么關(guān)注java代碼編程細(xì)節(jié)的程序員,俗話說:“細(xì)節(jié)決定成敗”,那么如何寫出好的java代碼呢?IT培訓(xùn)介紹一起來討論下:
1.重視注釋
有的java程序員在寫代碼時,從來沒有想過要在java代碼后加上相關(guān)的注釋,甚至是上萬行的代碼也沒有想過加上注釋,這就存在很大的問題,不說你的代碼會跟其他人分享討論,就你自己回顧你是怎么寫好這篇代碼的,你也是半天無法理出頭緒,這就為維護(hù)和修改等等工作添加了很大的麻煩。所以,要想寫出好的java代碼,一定從簡短的java代碼編寫開始注重在java代碼后面加上相應(yīng)的注釋,養(yǎng)成良好的習(xí)慣。
2.重視排版整潔
看很多java程序員的排版總覺得在欣賞一幅藝術(shù)品,但是看到一些java程序員的排版卻總覺得無力吐槽。同樣是編寫代碼,但是給人的視覺體驗(yàn)是相當(dāng)?shù)牟煌?,?dāng)然好的java代碼給人的享受也是美的,所以要想寫出好的代碼,一定要重視排版整潔。
3.注重命名規(guī)則
現(xiàn)在在一個團(tuán)隊開發(fā)中,都會提前定制一個統(tǒng)一的命名規(guī)則,這樣利于提高工作效益。但是很多java程序員是缺乏這個意識的,每次敲代碼,更喜歡按照自己慣常的方式老命名模塊、函數(shù),這樣是方便了自己,但是忽視團(tuán)隊協(xié)作,所以在日常工作中,特別是團(tuán)隊工作中一定要重視命名規(guī)則。
4.養(yǎng)成備份習(xí)慣
備份的重要性不用小編強(qiáng)調(diào),相必你也知道。但是有的java程序員就是沒有養(yǎng)成這樣的好習(xí)慣,每次敲完代碼就不記得隨手保存,每次等到除了事故,比如電腦出了故障,辛辛苦苦敲打的java代碼沒保存找不回來的情況下就開始懊惱,與其這樣還不如在一開始就養(yǎng)成良好的備份習(xí)慣,這樣也方便自己日后查找利用。
項(xiàng)目結(jié)構(gòu)如下:
代碼如下
package?main;
public?class?Course?{
private?String?classNum;
private?String?credit;
private?String?startClassDate;
private?String?endClassDate;
private?String?teacher;
private?String?assessment;
public?String?getClassNum()?{
return?classNum;
}
public?void?setClassNum(String?classNum)?{
this.classNum?=?classNum;
}
public?String?getCredit()?{
return?credit;
}
public?void?setCredit(String?credit)?{
this.credit?=?credit;
}
public?String?getStartClassDate()?{
return?startClassDate;
}
public?void?setStartClassDate(String?startClassDate)?{
this.startClassDate?=?startClassDate;
}
public?String?getEndClassDate()?{
return?endClassDate;
}
public?void?setEndClassDate(String?endClassDate)?{
this.endClassDate?=?endClassDate;
}
public?String?getTeacher()?{
return?teacher;
}
public?void?setTeacher(String?teacher)?{
this.teacher?=?teacher;
}
public?String?getAssessment()?{
return?assessment;
}
public?void?setAssessment(String?assessment)?{
this.assessment?=?assessment;
}
@Override
public?String?toString()?{
return?"?課程號:"?+?classNum?+?",?學(xué)分:"?+?credit
+?",?上課時間:"?+?startClassDate?+?",?下課時間:"
+?endClassDate?+?",?教師:"?+?teacher?+?",??考核方式:"
+?assessment?+?"";
}
}
package?main;
import?java.io.BufferedInputStream;
import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.InputStreamReader;
import?java.math.BigDecimal;
import?java.util.ArrayList;
import?java.util.Arrays;
import?java.util.List;
import?java.util.Scanner;
public?class?Main?{
public?static?void?main(String[]?args)?throws?Exception?{
Scanner?sc?=?new?Scanner(System.in);???
System.out.println("創(chuàng)建學(xué)生請輸入姓名:");??
Student?stu1?=?new?Student();
stu1.setName(sc.nextLine());
Scanner?sc1?=?new?Scanner(System.in);???
System.out.println("創(chuàng)建學(xué)生請輸入學(xué)號:");
stu1.setNumber(sc1.nextLine());
System.out.println("請選擇課程,課程如下:");
ListCourse?list2?=?new?ArrayListCourse();
stu1.setCourses(list2);
ListCourse?list?=?readTxt();
for?(Course?course?:?list)?{
System.out.println(course.toString());
}
for?(int?i?=?1;?i??5;?i++)?{
System.out.println("請輸入第"+i+"個課程號:");
//輸入第一個課程號
list2?=?handleClass(list,?list2);
System.err.println("已選擇成功!");
list?=?notSelectClass(list,?list2);
System.out.println("請選擇課程,課程如下:");
if(i==4){
break;
}
for?(Course?course?:?list)?{
System.out.println(course.toString());
}
}
System.out.println("課程已選完!結(jié)果如下:");
System.err.println("學(xué)生:"+stu1.getName()+":");
for?(Course?course?:?list2)?{
System.err.println(course.toString());
}
}
/**
*?
*?查看未選擇可選課程
*?@param?list?全部可選課程
*?@param?list2?已選課程
*?@return
*/
private?static?ListCourse?notSelectClass(ListCourse?list,ListCourse?list2){
for?(int?i?=?0;?i??list.size();?i++)?{
for?(Course?course?:?list2)?{
//把已選課程剔除
if(course.getClassNum().equals(list.get(i).getClassNum())){
list.remove(i);
continue;
}
//把時間重合課程剔除??startdate1?=enddate2?and?enddate1=startdate2
if(daYuDengYu(course.getEndClassDate(),list.get(i).getStartClassDate())daYuDengYu(list.get(i).getEndClassDate(),?course.getStartClassDate())){
list.remove(i);
}
}
}
return?list;
}
public?static?boolean?daYuDengYu(String?first,?String?second){
BigDecimal?bd1?=?new?BigDecimal(first);
BigDecimal?bd2?=?new?BigDecimal(second);
return?bd1.compareTo(bd2)=0?true:false;
}
/**
*?處理選擇課程
*?@param?list
*?@param?list2
*?@return
*/
private?static?ListCourse?handleClass(ListCourse?list,ListCourse?list2){
while?(true)?{
Scanner?sssi?=?new?Scanner(System.in);
String?num?=?sssi.nextLine().trim();
for?(Course?course?:?list)?{
if(num.equals(course.getClassNum())){
list2.add(course);
return?list2;
}
}
System.out.println("課程號輸入錯誤,請重新輸入:");
}
}
/**
*?讀取txt獲取課程??每個課程按;分割每個屬性按,分割
*?@return
*?@throws?Exception
*/
private?static?ListCourse?readTxt()?throws?Exception{
/*?讀入TXT文件?*/??
String?pathname?=?Main.class.getResource("/").toString();
pathname?=?pathname.substring(6,?pathname.length()-4)+"/src/classs/class.txt";?//獲取絕對路徑
File?filename?=?new?File(pathname);?//?要讀取以上路徑的txt文件??
ListCourse?list?=?new?ArrayListCourse();
BufferedInputStream?bis?=?new?BufferedInputStream(new?FileInputStream(filename));??
//讀取文件內(nèi)容??
byte[]?b?=?new?byte[bis.available()];??
bis.read(b);??
if(b!=null){
String?[]?strs=?new?String(b).split(";");
if?(strs==null)?{
return?null;
}
for?(String?string?:?strs)?{
String[]?str?=?string.split(",");
Course?course?=?new?Course();
course.setAssessment(str[5].trim());
course.setClassNum(str[0].trim());
course.setCredit(str[1].trim());
course.setEndClassDate(str[3].trim());
course.setStartClassDate(str[2].trim());
course.setTeacher(str[4].trim());
list.add(course);
}
}
bis.close();//關(guān)閉流(關(guān)閉bis就可以了)??
return?list;
}
}
package?main;
import?java.util.List;
public?class?Student?{
private?String?name;
private?String?number;
private?ListCourse?courses;
public?String?getName()?{
return?name;
}
public?void?setName(String?name)?{
this.name?=?name;
}
public?String?getNumber()?{
return?number;
}
public?void?setNumber(String?number)?{
this.number?=?number;
}
public?ListCourse?getCourses()?{
return?courses;
}
public?void?setCourses(ListCourse?courses)?{
this.courses?=?courses;
}
}
001,1,7,8,Joyce,assignment;
002,1,8,9,Joyce,assignment;
003,1,12,15,Joyce,assignment;
004,1,18,19,Joyce,assignment;
005,1,7,8,LI,assignment;
006,1,8,9,LI,assignment;
007,1,12,15,LI,assignment;
008,1,18,19,LI,assignment;
怎么判斷代碼是否是優(yōu)質(zhì)量的代碼呢?下面河南電腦培訓(xùn)來簡單對代碼質(zhì)量的問題進(jìn)行一個介紹。
代碼質(zhì)量所涉及的5個方面,編碼標(biāo)準(zhǔn)、代碼重復(fù)、代碼覆蓋率、依賴項(xiàng)分析、復(fù)雜度分析。
我們分別來看一下這5方面:編碼標(biāo)準(zhǔn):一般來說,公司都會有一份編碼規(guī)范,類命名、包命名、代碼風(fēng)格之類的都會有所要求。
代碼重復(fù):顧名思義就是重復(fù)的代碼,如果代碼中有大量的重復(fù)代碼,就要考慮是否將重復(fù)的代碼提取出來,封裝成一個公共的方法或者組件。
代碼覆蓋率:測試代碼能運(yùn)行到的代碼比率,代碼經(jīng)過了單元測試了嗎?是不是每個方法都進(jìn)行了測試,代碼覆蓋率是多少?這關(guān)系到代碼的功能性和穩(wěn)定性。
依賴項(xiàng)分析:代碼依賴關(guān)系怎么樣?耦合關(guān)系怎么樣?是否有循環(huán)依賴?是否符合高內(nèi)聚低耦合的原則?復(fù)雜度分析:如果代碼中嵌套了很多層的ifelse,就會讓人很難閱讀。
要相信越優(yōu)秀的代碼,越容易讀懂。