txt salto print para metodo linea imprimir graficar formas como arreglos arbol java methods text-files

java - salto - Una y otra vez imprime el mismo valor



salto de linea en txt java (3)

Se me ha pedido que verifique el número de veces que aparece el nombre de un equipo en el texto que está en mi computadora. Escribí el código, el código funciona bien al contar la cantidad de veces que apareció el nombre del equipo, pero sigue preguntando el nombre del equipo, como 50 veces desde que el tamaño de la matriz que declaro es 50. Por favor, ayúdenme . Gracias.

import java.util.*; import java.io.*; public class worldSeries { public String getName(String teamName) { Scanner keyboard = new Scanner(System.in); System.out.println(" Enter the Team Name : " ); teamName = keyboard.nextLine(); return teamName; } public int checkSeries1 () throws IOException { String teamName=""; Scanner keyboard = new Scanner(System.in); String[] winners = new String[50]; int i = 0 ; File file = new File ("WorldSeriesWinners.txt"); Scanner inputFile = new Scanner(file); while ( inputFile.hasNext () && i < winners.length ) { winners[i] = inputFile.nextLine(); i++; } inputFile.close(); int count = 0; for ( int index = 0 ; index < winners.length ; index ++ ) { if ( getName(teamName).equals(winners[index])) { count++; } } return count; } public static void main(String[]Args) { String teamName = ""; worldSeries object1 = new worldSeries(); try { System.out.println(" The Number of times " + object1.getName(teamName) + "won the Championship is : " +object1.checkSeries1()); } catch ( IOException ioe ) { System.out.println(" Exception!!! "); ioe.printStackTrace(); } } }


En el método checkSeries1() elimina la llamada al método para getName (teamName) de for loop y llama a getName () solo una vez fuera de loop, de esta manera:

int count = 0; String name = getName(teamName); for ( int index = 0 ; index < winners.length ; index ++ ) { if ( name.equals(winners[index])) { count++; } }


Llamar a getName() una vez cada bucle hará que el programa solicite un nombre de equipo en cada bucle:

int count = 0; for ( int index = 0 ; index < winners.length ; index ++ ) { if ( getName(teamName).equals(winners[index])) { count++; } }

Al mover getName() fuera del ciclo, solo se llamará una vez (y el nombre de un equipo solo se solicitará una vez):

int count = 0; String nameOfTeam = getName(teamName); // This line runs getName() once for ( int index = 0 ; index < winners.length ; index ++ ) { if ( nameOfTeam.equals(winners[index])) { count++; } }


No invoque ''GetName'' en el bucle, llámelo una vez antes del bucle y almacene el resultado.