Cómo validar este método especialmente
System.out.println("Enter number of vertices");
n=Integer.parseInt(br.readLine());
esta. por favor, ayúdame
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader ( new InputStreamReader (System.in));
System.out.println("Enter number of vertices");
n=Integer.parseInt(br.readLine());
graph2 g = new graph2(n);
g.createGraph();
System.out.println("\nEnter the source node:");
int s = g.getNumber();
System.out.println("\nEnter the target node:");
int t = g.getNumber();
long start = System.currentTimeMillis();
algomain2 ff = new algomain2(g,s,t);
System.out.println("\nFinal Residual Network with no augmenting path");
System.out.print("\nCapacity Flow matrix for your graph is :\n");
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
System.out.print(" "+ff.f[i][j]+"/"+g.cf[i][j]);
System.out.print("\n");
}
int maxflow=0;
long end = System.currentTimeMillis();
System.out.println("\n Max flow is: ");
for(int i=1; i<=n;i++)
if(g.adj[s][i]==1)
maxflow=maxflow + ff.f[s][i];
System.out.println(maxflow);
System.out.println("Time taken (ms):"+ (end-start));
}
Dado que está utilizando int n=Integer.parseInt(br.readLine);
, Integer.parseInt()
siempre trata de convertir su entrada para el número entero, y asignar a la variable de número entero. Usted no tiene que preocuparse por ello, como Integer.parseInt()
método no hace internamente esto.
Y lo que se tira NumberFormatException
en la firma del método, si Integer.parseInt()
no obtiene el valor entero o algo que no se puede convertir a entero, el NumberFormatException
será lanzada una excepción.
Por lo tanto, si se le da ingreso de números, n
almacenará la entrada y se programa también se ejecuta. Si se le da entrada excepto el número (medio algo que contiene caracteres), el código dará excepción y terminar la ejecución.
Para manejarlo, usted puede poner su código dentro try-catch
del bloque para que sea adecuadamente manejar. Como abajo
try{
System.out.println("Enter number of vertices");
n=Integer.parseInt(br.readLine());
}
catch(NumberFormatException e){
System.out.println("Please enter number only");
}
O puede presentar algún método para comprobar si la entrada es entero o no. Si es entero, el retorno Integer.parseInt(param)
, la devolución otra cosa false
. Y dentro de este método, sólo hay que poner el código (básicamente el fragmento de código anterior estará allí con instrucción de retorno adecuada)