Java字串的輸入輸出實驗
阿新 • • 發佈:2019-01-10
最近安裝了MyEclipse,感覺編譯器挺好用的,但是電腦是不是裝太多東西了,反正使用起來不流暢,如果今年能在年尾過四級,就給自己換臺新電腦!
言歸正傳,Java中和C/C++不太一樣的是中文字元在C/C++中有2個字元,而實驗中發現Java只有一個。然後就是我用in.next()這樣輸入流類似於C/C++中的scanf(%s*n),也就是說遇到一個空格就多一個字串,而in.nextLine()則是讀入一行,但是,如果你前面有輸入東西的話,並且要用到回車,這時候你就必須在之間多一個in.nextLine()來吃掉一個回車鍵,類似於C/C++中getchar()的效果。
還有注意的一點是,輸入的字串如果是中文它會一直讀不出來,但是用MyEclipse卻可以,這可能使DrJava編譯器比較古老,總之輸入最好改成英文。除此之外Java中的類的使用雖然大同小異,但是Java中還是比較地繁瑣!這次找了挺久的BUG是在Java中空串""和NULL是不一樣的,不能用str.isEmpty()來判斷是否為"",這點要注意了!
程式碼如下:
import java.util.*; class ArrayTest2{ static String f(String str){ if(str.length()==0 || str.charAt(0)>'9'||str.charAt(0)<'0') return "";//空串的時候要注意判斷,防止異常 return str.charAt(0)+f(str.substring(1)); } static int f1(int data) { if(data/10==0) return 1; return f1(data/10)+1; } public static void main(String[] args){ Scanner in=new Scanner(System.in); int i,j,DetSize; double Max,Major,Unmajor; String str,str1; while(true){ System.out.println("****請輸入一個大於0的整數,否則結束矩陣構建****"); System.out.println("請輸入矩陣的規模:"); DetSize=in.nextInt(); if(DetSize<=0){ System.out.println("End!"); break; } System.out.println("請輸入矩陣的資料:"); double[][] Det=new double[DetSize][DetSize]; //矩陣 double[] A=new double[DetSize]; double[] B=new double[DetSize]; Major=Unmajor=Max=0; for(i=0;i<DetSize;i++){ for(j=0;j<DetSize;j++){ Det[i][j]=in.nextDouble(); if(i==0&&j==0) Max=Det[i][j]; else if(Max<Det[i][j]) Max=Det[i][j]; A[i]+=Det[i][j]; B[j]+=Det[i][j]; if(i==j) Major+=Det[i][j]; if(i+j==DetSize-1) Unmajor+=Det[i][j]; } } System.out.println("****請輸入你想要檢視的矩陣資訊****"); System.out.println("請輸入類似於“maindiag”“unmaindiag”、“3row”“4rank”等這樣的資訊"); System.out.println("按0返回重新構造矩陣"); in.nextLine(); while(true){ str=in.nextLine(); if(str.equals("0")) break; else if(str.equals("maindiag")) System.out.println("主對角線的和: "+Major); else if(str.equals("unmaindiag")) System.out.println("副對角線的和: "+Unmajor); else if(str.equals("Max")) System.out.println("最大值: "+Max); else { str1=f(str); if(str1.equals("")){ System.out.println("你輸入的格式有誤!請重新輸入."); continue; } j=Integer.parseInt(str1); i=f1(j); if(j<1 || j>DetSize || i==str.length()) System.out.println("你輸入的格式有誤!請重新輸入."); else if(str.substring(i).equals("row")) System.out.println("第"+j+"行的和: "+A[j-1]); else if(str.substring(i).equals("rank")) System.out.println("第"+j+"列的和: "+B[j-1]); else System.out.println("你輸入的格式有誤!請重新輸入."); } } } } }