【发布时间】:2013-01-12 11:04:50
【问题描述】:
这里有一段关于图中深度优先搜索的代码。 谁知道为什么在这段代码中使用了 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();
}
}
【问题讨论】:
-
这样就可以检测到无效整数了吗?
-
你为什么在这里问?为什么不问问写它的人?你在这里得到的只是猜测,例如,也许作者不知道 Scanner,或者当时没有它,或者不在乎,或者出于多种可能的原因更喜欢 BufferedReader比如@fge的。没有建设性。
-
@EJP 您可以将其视为“BufferedReader 与 Scanner 相比有什么好处
-
@JanDvorak I 我们都可以猜到 OP 的真正含义。我更喜欢以书面形式处理文本。他问为什么。
-
看起来该代码是为一次性从 System.in 中读取大量行而设计的。就像您将文件的内容复制并粘贴到控制台一样。缓冲输入流读取器始终可以提高性能。
标签: java java.util.scanner bufferedreader