BufferedReader比Scanner有什么好处

这是关于图中深度优先搜索的代码。 谁知道为什么在这段代码中使用了bufferedReader类? 为什么不使用nextIntfunction呢? 它的特权是什么? 是为了加快处理速度? 谢谢 :)

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Graph { int g[][]; int v,e; int visited[]; void createGraph()throws IOException { int a,b; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("\n Enter Number Of Vertices = "); v=Integer.parseInt(br.readLine()); System.out.print("\n Enter Number Of Edges = "); e=Integer.parseInt(br.readLine()); g=new int[v+1][v+1]; for(int i=1;i<=e;i++) { System.out.print("\n Enter Edge Infomation "); System.out.print("\n From ="); a=Integer.parseInt(br.readLine()); System.out.print("\n To ="); b=Integer.parseInt(br.readLine()); g[a][b]=g[b][a]=1; } } void callDFS() { visited = new int[v+1]; dfs(1); } void dfs(int k) { System.out.print(k + "\t"); visited[k]=1; for(int i=1;i<=v;i++) { if(g[k][i] !=0 && visited[i]!=1) dfs(i); } } } class DFS { public static void main(String args[])throws IOException { Graph g = new Graph(); g.createGraph(); g.callDFS(); } } 

这是您打算如何使用流的问题。 存在用于简单和线程应用程序的缓冲读取器。 这是由于扫描仪缺乏线程安全性。

我想你会从这个问题Scanner vs. BufferedReader得到更多

也许,当编写这段代码时,Scanner类不存在(实际上java 1.4没有Scanner类),或者编写这段代码的人只是使用BufferedReader的readLine方法而不是使用Scanner.nextLine()方法,我无法看到关于你的问题的其他解释

BufferedReader更简单(这使它更有效),但它也是一个更明确的选择,显示您打算使用BufferdReader提供的function。 即readLine()是主要的。

简而言之,如果您有BufferedReader您就知道它只是读取行。 如果您使用Scanner则意味着您可能或许多人不会阅读更复杂的内容。

BTW:

  Integer.parseInt(br.readLine()) 

  scanner.nextInt(); 

虽然区别通常在noob开发者身上失去,但是不一样。 出于这个原因,我更喜欢第一个例子。 不同之处在于如何处理新行。