2015-06-27 3 views
0

Мои мысли/вопросы:Java: удаление кавычки из строки

Я работаю на вызов Java (направления ржали). У меня есть Часть 1 завершена (показано в нижеследующем коде). Я очень близок к тому, что Часть 2/3 закончена.

Как вы увидите в моем коде, у меня есть 2 for-loops. Первый, чтобы выполнить итерацию по массиву отсортированных имен. Второй, чтобы перебирать символы в каждом имени.

Как указано в направлениях, для каждого символа должны генерироваться значения int, и эти значения затем добавляются. Итак, A равно 1, B равно 2, C - 3 ... и ABC равно 6. Затем эти значения int умножаются на индексный номер данного String/name. Итак, если ABC (со значением 6) находилась в индексе 2, то это будет 12.

После того, как вышеописанный шаг будет завершен, я должен суммировать все оценки (каждый балл имен).

Приведенное выше мое понимание направлений.

Проблема заключается мой результат выглядит следующим образом:

"AARON" 
 
0 
 
"ABBEY" 
 
-25 
 
"ABBIE" 
 
-82 
 
"ABBY" 
 
-90 
 
"ABDUL" 
 
-80 
 
"ABE" 
 
-260 
 
"ABEL" 
 
-240 
 
"ABIGAIL" 
 
-133 
 
"ABRAHAM" 
 
-128 
 
"ABRAM" 
 
-225 
 
"ADA" 
 
-540 
 
"ADAH" 
 
-506 
 
"ADALBERTO" 
 
216 
 
"ADALINE" 
 
-182 
 
"ADAM" 
 
-574 
 
"ADAN" 
 
-600 
 
"ADDIE" 
 
-592 
 
"ADELA" 
 
-629

Я побежал через мою логику несколько раз, и это кажется правильным для меня, но я не» я знаю, как я генерирую эти числа. Единственное, что у меня есть, это то, что кавычки («) отбрасывают мои вычисления. У них есть значение ASCII 34. Я попытался удалить их в нескольких местах в моем коде с помощью replace() replaceAll(), но . Я не был в состоянии слишком

Что я делаю неправильно/как я могу это исправить/что мне нужно сделать, чтобы выполнить это задание/как я могу улучшить свой код

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

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

Часть 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/tiiBoyOpR

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

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 appearingbeforefirstname 
 
// \t \t System.out.println(out); // output: 
 
//  "MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA"... 
 
\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 
 
\t \t for (int i = 0; i < sortedStr.length; i++) { 
 
\t \t \t 
 
\t \t \t pw.println(sortedStr[i]); 
 
\t \t \t System.out.println(sortedStr[i]);// print to console just to see output 
 
\t \t \t 
 
\t \t \t int score = 0; 
 
// \t \t \t sortedStr[i].replaceAll("\"", ""); // I used this to try to remove the "s from my Strings 
 
\t \t \t for (char ch: sortedStr[i].toUpperCase().toCharArray()) { 
 
\t \t \t  score += ((int)ch - 64); /* A is decimal 65 */ 
 
\t \t \t } 
 
\t \t \t score = score * i; /* multiply by position in the list */ 
 
\t \t \t pw.println(score); 
 
\t \t \t System.out.println(score); 
 
\t \t } 
 
\t \t bf.close(); \t \t 
 
\t \t fb.close(); \t \t 
 
\t \t pw.close(); 
 
\t } 
 
}

ответ

0

Вы писали

// sortedStr[i].replaceAll("\"", ""); // I used this to try to remove the "s from my Strings 

Java String является неизменным. Эта функция возвращает новую строку с удаленными кавычками. Вы можете использовать

sortedStr[i] = sortedStr[i].replaceAll("\"", ""); 

и он должен работать нормально.

+0

СПАСИБО. Я не думаю, что видел бы это. В то время как вы слышите, я могу спросить, как вы закончите часть 3? Часть 3: Какова общая сумма всех имен в файле? –

+0

сохраняют отдельную величину int и суммируют ее, когда вы получаете баллы за каждое слово. – twentylemon

+0

Мне любопытно, где вы нашли этот вызов? Я люблю такие вещи. – Daniel