JAVA Lesen Ganzzahlen bilden eine Text-Datei schreiben und auf dem Array-Listen
Ich habe eine text-Datei mit dem folgenden Inhalt:
0 12
1 15
2 6
3 4
4 3
5 6
6 12
7 8
8 8
9 9
10 13
Will ich Lesen Sie diese ganzen zahlen aus einer txt-Datei und speichern Sie die beiden Spalten in zwei verschiedenen arrays in Java.
Dank aioobe für seine nette Antwort für die den ersten Teil.
Nun will ich entwickeln, es in dieser Weise:
-
Schreiben Sie eine Methode namens
occurrence
gegeben, die eine Zahl als input und schreiben Sie die Anzahl der vorkommen, dass diese Nummer hat. -
Schreiben Sie eine weitere Methode namens
occurrences
, dass nicht jeder input, sondern als output gibt es die Zahl, die große Anzahl von Wiederholungen (in der zweiten Spalte) in der Datei. -
Endlich, die
Main
Programm wird der Benutzer aufgefordert, zu schreiben eine Zahl von 1 bis 3.
1= Methode, die aus einer Eingabe-Zahl (das ist die Nummer in der ersten Spalte) gibt zurück die dazugehörige Zahl in der zweiten Spalte.
2= das erste vorkommen-Methode (mit Eingang)
3= der zweiten Instanz-Methode (die ohne input)
Ich schrieb den code, aber es gibt einige Fehler(über die übergabe der array-Liste einer Methode), und ich brauche Ihre Hilfe über die.
Ich bin ein JAVA-Anfänger, Also, wenn Sie fühlen, dass der code nicht passt, bitte machen Sie die erforderlichen änderungen vor.
Dies ist mein letzter code:
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
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
übergeben Sie eine
Object[]
während Sie Ihre Methode erwartet einint[]
(beachten Sie, dass toArray() gibt ein Object[])
auch
occurrence()
ist eine Instanzmethode, während die main ist statisch, Sie wird sich ändern müssenoccurrence()
um eine statische Methode oder erstellen Sie eine Instanz der Liste.so Methoden Signatur:
- und Methoden-Aufrufe:
p.s. dies bezieht sich nicht auf deine Frage, aber es gibt eine starke java-Konvention, dass der name einer Klasse beginnt mit einem Großbuchstaben.
Dies ist die Letzte Antwort(ich auch aktualisiert, der Methoden):
Ich würde lieber BufferedReader. Lesen Sie es Zeile für Zeile und String verwenden.split () - Methode auf, um den column-Elementen.