JAVA Lire les Entiers de la forme d'un Fichier Texte et le Travail sur le Tableau de Listes
J'ai un fichier texte contenant le contenu suivant:
0 12
1 15
2 6
3 4
4 3
5 6
6 12
7 8
8 8
9 9
10 13
Je veux lire ces nombres entiers à partir d'un fichier txt et enregistrer les deux colonnes sur deux tableaux en Java.
Grâce à aioobe pour sa belle réponse pour la première partie.
Maintenant, je veux développer dans cette voie:
-
Écrire une méthode appelée
occurrence
, qui prend un nombre en entrée et inscrivez le numéro de l'occurrence que ce nombre a. -
Écrire une autre méthode appelée
occurrences
, qui n'ont pas d'entrée, mais une sortie il donne le nombre qui a le plus grand nombre d'occurrences (dans la deuxième colonne) dans le fichier. -
Enfin, la
Main
programme demandera à l'utilisateur d'écrire un nombre de 1 à 3.
1= méthode qui, à partir d'un numéro d'entrée (c'est le nombre de la première colonne) donne le nombre associé dans la deuxième colonne.
2= la première occurrence de la méthode (l'une avec entrée)
3= la deuxième occurrence de la méthode (sans entrée)
J'ai écrit le code, mais il y a quelques erreurs(sur la transmission de la liste de tableau à une méthode) et j'ai besoin de votre aide à ce sujet.
Je suis un JAVA débutant, Donc si vous vous sentez que le code n'est pas approprié, veuillez apporter les modifications nécessaires.
C'est mon code final:
import java.util.*; //importing some java classes
import java.lang.*;
import java.io.*;
public class list {
public static void main(String[] args) {
//Read the text file and store them into two arrays:
try {
List<Integer> column1 = new ArrayList<Integer>(); //Defining an integer Array List
List<Integer> column2 = new ArrayList<Integer>(); //Defining an integer Array List
Scanner myfile = new Scanner(new FileReader("c:/java/data.txt")); //Reading file using Scanner
while (myfile.hasNext()) { //Read file content using a while loop
column1.add(myfile.nextInt()); //Store the first integer into the first array list
column2.add(myfile.nextInt()); //Store the next integer into the second array list
}
myfile.close(); //close the file
System.out.println("column 1 elements are:\n" + column1); //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
System.out.println("column 2 elements are:\n" + column2); //[12, 15, 6, 4, 3, 6, 12, 8, 8, 9, 13]
//Getting a number(1-3) from user:
Scanner cases = new Scanner(System.in);
System.out.println("Enter a number between 1-3: ");
int num = cases.nextInt();
switch (num) {
case 1:
Scanner case1 = new Scanner(System.in);
System.out.println("Enter a number from first column to see how many occurrences it has: ");
int numb = case1.nextInt();
System.out.println(column2.get(numb));
break;
case 2:
occurrence(column2.toArray());
break;
case 3:
occurrences(column2.toArray());
break;
default: System.out.println("the number is not 1 or 2 or 3!");
}
} catch (Exception e) { //we defined it just in the case of error
e.printStackTrace(); //shows the error
}
} //End of MAIN
public void occurrence(int[] arg) { //Defining occurrence method
int count = 0;
//Getting a number from user input:
Scanner userin = new Scanner(System.in);
System.out.println("Enter an integer number: ");
int number = userin.nextInt();
//Finding the occurrences:
for (int i = 0; i < arg.length; i++)
if (arg[i] == number) count++;
System.out.println( number + " is repeated " + count + " times in the second column.");
} //End of occurrence method
public void occurrences(int[] arg) { //Defining occurrenceS method
int max = 0;
//Finding the maximum occurrences:
for (int i = 1; i < arg.length; i++)
if (arg[i] > arg[max]) max = i;
System.out.println( max + " is the most repeated number." );
} //End of occurrenceS method
}
Vous devez vous connecter pour publier un commentaire.
vous êtes de passage à un
Object[]
pendant que votre méthode attend unint[]
(notez que toArray() retourne un Object[])
également,
occurrence()
est une méthode d'instance, tandis que le principal est statique, vous devrez changeroccurrence()
être une méthode statique, ou créer une instance de la liste.méthodes de signature:
et des appels de méthodes seront:
p.s. ce n'est pas lié à votre question, mais il y a une forte java convention qu'un nom de classe commence par une majuscule.
C'est la réponse finale(j'ai aussi mis à jour les méthodes):
Je préfère BufferedReader. Lire ligne par ligne et d'utiliser des chaînes de caractères.méthode split() pour obtenir les éléments de colonne.