Мне нужно иметь возможность запрашивать у пользователя имя файла, а затем отображать имена в формате.
Напишите программу на Java, которая считывает последовательность имен (имя, за которым следует фамилия, разделенные хотя бы одним пробелом) из текстового файла и:
Отображает список имен (фамилия, за которой следует запятая, за которым следует один пробел, за которым следует имя), считываемых из входного файла в возрастающем порядке. Каждое имя и фамилия должны быть заглавными (первая буква в верхнем регистре, а остальные буквы в нижнем регистре). Имя и фамилия должны быть выровнены, как показано в примере ниже.
Для каждого имени в файле отображается количество раз, когда оно появляется в файле. (т.е. firstName: count). Этот список имен должен отображаться в порядке возрастания имен. Каждое имя должно быть написано заглавными буквами (первая буква в верхнем регистре, а остальные буквы в нижнем регистре) и отображаться только один раз. Имена и счета должны быть выровнены, как показано в примере ниже.
Для каждой фамилии в файле отображается, сколько раз фамилия встречается в файле. (т.е. lastName: count). Этот список фамилий должен отображаться в порядке возрастания фамилий. Каждая фамилия должна быть написана с заглавной буквы (первая буква в верхнем регистре, а остальные буквы в нижнем регистре) и отображаться только один раз. Фамилии должны быть выровнены, как показано в примере ниже.
Для каждого имени в файле (фамилия, за которой следует запятая, за которым следует один пробел, за которым следует имя) отображает количество раз, когда имена появляются в файле. (т.е. имя: количество). Этот список имен должен отображаться в порядке возрастания имен. Все имена и фамилии должны быть заглавными. Каждое имя должно отображаться только один раз. Имена, фамилии и счетчики должны быть выровнены, как показано в примере ниже.
Отображает список уникальных имен (фамилия, за которой следует запятая, за которой следует один или несколько пробелов, за которыми следует имя) в возрастающем порядке. Имена и фамилии должны быть выровнены, как показано в примере ниже.
Записывает список уникальных имен (фамилия, за которой следует запятая, за которой следует один или несколько пробелов, за которыми следует имя) в порядке возрастания в текстовый файл. Имена и фамилии должны быть выровнены так же, как в пункте 5.
Программа должна попросить пользователя указать имена входных и выходных файлов.
Результат должен быть:
Enter the name of the input file
input.txt
******* All Names *********
Beres, Kirsten
Beres, Kirsten
Beumer, Gretta
Hutt, Colette
Hutt, Shawanda
Jones, Colette
Jones, Marcia
Koenig, Gerri
Means, Tijuana
Montilla, Adriana
Montilla, Adriana
Montilla, Adriana
Montilla, Adriana
Mossman, Emmanuel
Sapienza, Colette
Sapienza, Colette
Shover, Neva
Stanfill, Marcia
******* First Names count*********
Adriana 4
Colette 4
Emmanuel 1
Gerri 1
Gretta 1
Kirsten 2
Marcia 2
Neva 1
Shawanda 1
Tijuana 1
******* Last Names count *********
Beres 2
Beumer 1
Hutt 2
Jones 2
Koenig 1
Means 1
Montilla 4
Mossman 1
Sapienza 2
Shover 1
Stanfill 1
******* All Names count*********
Beres, Kirsten 2
Beumer, Gretta 1
Hutt, Colette 1
Hutt, Shawanda 1
Jones, Colette 1
Jones, Marcia 1
Koenig, Gerri 1
Means, Tijuana 1
Montilla, Adriana 4
Mossman, Emmanuel 1
Sapienza, Colette 2
Shover, Neva 1
Stanfill, Marcia 1
******* All Unique Names *********
Beres, Kirsten
Beumer, Gretta
Hutt, Colette
Hutt, Shawanda
Jones, Colette
Jones, Marcia
Koenig, Gerri
Means, Tijuana
Montilla, Adriana
Mossman, Emmanuel
Sapienza, Colette
Shover, Neva
Stanfill, Marcia
Enter the name of the output file
output.txt
Это то, что у меня есть до сих пор, но я чувствую себя потерянным, не могу найти способ извлечь выгоду и считать. Я пробовал несколько вещей, но, похоже, ничего не работает.
public static void getNames(ArrayList<String> fn,
ArrayList<String> ln) throws IOException {
Scanner kb = new Scanner(System.in);
System.out.print("What is the name input file? ");
String fileName = kb.next();
File inpFile = new File(fileName);
Scanner in = new Scanner(inpFile);
while (in.hasNext()) {
String firstName = in.next();
String lastName = in.next();
fn.add(firstName);
ln.add(lastName);
}
}
public static void display(ArrayList<String> names) {
for (int i = 0; i < names.size(); i++) {
System.out.println(names.get(i));
}
}
public static void capitalize(ArrayList<String> firstName) {
for (int i = 0; i < firstName.size(); i++) {
firstName.set(i; toCapital(firstName.get(i)));
}
}
/*
* public static void capitalize(ArrayList<String> names) {
* for (int i = 0; i < names.size(); i++){
* names.set(i,toCapital(names.get(i)));
* }
* }
*/
//public static String toCapital (String name){
//String.toUpperCase(name.charAt(0)) +
//String.toLowerCase(name.substring(1));
//return j;
//}
public static void main(String[] args) throws IOException {
// TODO code application logic here
ArrayList<String> first = new ArrayList<>();
ArrayList<String> last = new ArrayList<>();
getNames(first, last);
//display(first);
//display(last);
ArrayList<String> allNames = new ArrayList<>();
for (int i = 0; i < first.size(); i++) {
allNames.add(last.get(i) + ", " + first.get(i));
}
display(allNames);
}
Это содержимое входного файла:
colette Sapienza gretta Beumer EMManuel Mossman Colette Sapienza marcia Jones Shawanda Hutt Adriana monTILla adriana montilla Adriana Montilla Colette Jones Colette Hutt Marcia Stanfill NeVa shover tijuana Means Adriana Montilla gerri KoeNig Kirsten beres Kirsten Beres
"nothing seems to work"
- Что вы имеете в виду? Вы предоставили некоторый код и ожидаемый результат, но не объяснили, что вы пробовали и что получаете в настоящее время. Это также было бы проще использовать, если бы вы предоставили MCVE, поскольку ваш код не будет компилироваться. - person mkobit   schedule 04.11.2015