У меня есть текстовый файл, содержащий следующее содержимое:
0 12
1 15
2 6
3 4
4 3
5 6
6 12
7 8
8 8
9 9
10 13
Я хочу прочитать эти целые числа из txt-файла и сохранить два столбца в два разных массива в Java.
Спасибо aioobe за хороший ответ для первой части .
Теперь я хочу развить это следующим образом:
Напишите метод с именем occurrence
, который принимает число в качестве входных данных, и запишите номер вхождения, который имеет это число.
Напишите другой метод с именем occurrences
, который нене имеет никаких входных данных, но в качестве выходных данных он дает число, которое имеет наибольшее количество вхождений (во втором столбце) в файле.
Наконец, программа Main
попросит пользователя написать число от 1 до 3.
1 = метод, который из числа ввода (то есть числа в первом столбце)возвращает связанный номер во втором столбце.
2 = первый метод вхождения (один с вводом)
3 = второй метод вхождения (один без ввода)
Я написал код, но есть некоторые ошибки (о передаче списка массивов вметод), и мне нужна ваша помощь по этому поводу.Я новичок в JAVA, поэтому, если вы считаете, что код не подходит, внесите необходимые изменения.Это мой окончательный код:
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
}