2015-06-26 2 views
-1

Мои мысли/вопросы: Я работаю над вызовом Java (рекомендации ниже). У меня есть Часть 1 завершена (показано в нижеследующем коде). Тем не менее, мне трудно продвигаться с часть 2. Мне интересно услышать предложения/примеры того, как я мог бы выполнить эту задачу. Как и возможный рефактор моей работы для части 1, если это необходимо.Java: создание значения int на основе букв в алфавитном порядке

вызов Направление:

Используйте names.txt файл, текстовый файл, содержащий 46K более пяти тысяч имен, найденных в каталоге ресурсов.

Часть 1: Начните с сортировки списка в алфавитном порядке. Сохраните этот новый файл как p4aNames.txt в каталоге ответов.

Часть 2: Используя p4aNames.txt, возьмите алфавитное значение для каждого имени и умножьте это значение на его алфавитную позицию в списке, чтобы получить оценку имени. Например, когда список сортируется в алфавитном порядке, COLIN, который стоит 3 + 15 + 12 + 9 + 14 = 53, является 938-м именем в списке. Таким образом, COLIN получит оценку 938 × 53 = 49714. Сохраните список всех оценок имен как p4bNames.txt.

Часть 3: Какова общая сумма всех баллов в файле?

Pic Ссылка Отображение выходного & Каталог:

http://screencast.com/t/t7jvhYeN

Мой текущий код:

package app; 
 

 
import java.io.BufferedReader; 
 
import java.io.BufferedWriter; 
 
import java.io.FileReader; 
 
import java.io.FileWriter; 
 
import java.io.IOException; 
 
import java.io.PrintWriter; 
 
import java.util.Arrays; 
 

 
public class AlphabetizedList { 
 
\t public static void main() throws IOException { 
 
\t \t new AlphabetizedList().sortingList(); 
 
\t } 
 
\t public void sortingList() throws IOException { 
 
\t \t FileReader fb = new FileReader("resources/names.txt"); 
 
\t \t BufferedReader bf = new BufferedReader(fb); 
 
\t \t String out = bf.readLine(); 
 
\t \t out = out.substring(out.indexOf("\"")); //get rid of strange characters appearing before firstname 
 
// \t \t System.out.println(out); Would show unsorted names 
 
\t \t bf.close(); 
 
\t \t fb.close(); 
 
\t \t 
 
\t \t String[] sortedStr = out.split(","); 
 
\t \t Arrays.sort(sortedStr); 
 
\t \t 
 
\t \t PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("answers/p4aNames.txt"))); 
 
\t \t for (int i = 0; i < sortedStr.length; i++) { 
 
\t \t pw.println(sortedStr[i]); 
 
\t \t System.out.println(sortedStr[i]); // print to console just to see output 
 
\t \t } 
 
\t \t pw.close(); 
 
\t } 
 
}

+0

StackOverflow это на самом деле не платформа, где вы можете попросите других людей полностью написать свой Кодекс. Напишите свой собственный код, и если вы решительно застряли, вернитесь, но, пожалуйста, приложите еще несколько усилий. Что именно вы не понимаете для _Part 2_? – Alexander

ответ

1

You возникают проблемы с определением значения числа для каждого символа? Просто преобразуйте строку в верхний регистр, переведите каждый символ в int и вычтите 64, чтобы получить числовое значение для каждого символа. Что-то вроде этого:

int score = 0; 
for (char ch: sortedStr[i].toUpperCase().toCharArray()) { 
    score += (int)ch - 64; /* A is decimal 65 */ 
} 
score = score * i; /* multiply by position in the list */ 
0

Вы можете использовать попробовать ресурсы, так что вам не нужно явно закрывать файл, используя file.close ..

try (PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("answers/p4bNames.txt")))) { 
     for (int i = 1; i <= sortedStr.length; i++) {//starting from1 
      int score = 0; 
      for (char ch : sortedStr[i-1].toUpperCase().toCharArray()) { 
       score += ch - 'A' + 1; //subtracting A for ex if ch is C then C - A will be 2 so adding 1 to make 3 
      } 
      score *= i;//mutiplying the value by the index 
      pw.println(score); 
      System.out.println(sortedStr[i]); // print to console just to see output 
     } 
    } catch (IOException ex) { 
     //Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^