这是关于图中深度优先搜索的代码。 谁知道为什么在这段代码中使用了bufferedReader类? 为什么不使用nextInt功能呢? 它的特权是什么? 是为了加快处理速度? 谢谢:))
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();
}
}
答案 0 :(得分:2)
可能在编写此代码时,Scanner类不存在(实际上java 1.4没有Scanner类),或者编写此代码的人只是使用BufferedReader的readLine方法而不是使用Scanner.nextLine( )方法,我看不到关于你的问题的其他解释
答案 1 :(得分:2)
这是您打算如何使用流的问题。存在用于简单和线程应用程序的缓冲读取器。这是由于扫描仪缺乏线程安全性。
我想你会从这个问题Scanner vs. BufferedReader
中获得更多信息答案 2 :(得分:0)
BufferedReader更简单(这使它更有效),但它也是一个更明确的选择,显示您打算使用BufferdReader提供的功能。即readLine()
是主要的。
简而言之,如果你有BufferedReader
,你知道它只是读取线条。如果您使用Scanner
,则意味着您可能或许多人不会阅读更复杂的内容。
顺便说一句:
Integer.parseInt(br.readLine())
和
scanner.nextInt();
虽然区别通常在noob开发者身上失去,但并不相同。出于这个原因,我更喜欢第一个例子。不同之处在于如何处理新行。