gpt4 book ai didi

Java:从字符串中删除引号

转载 作者:行者123 更新时间:2023-11-30 08:06:07 25 4
gpt4 key购买 nike

我的想法/问题:

我正在应对 Java 挑战(说明如下)。我已完成第 1 部分(如下面的代码所示)。我即将完成第 2/3 部分

正如您在我的代码中看到的,我有 2 个 for 循环。第一个,迭代我的排序名称数组。第二个,迭代每个名称中的字符。

如说明中所述,将为每个字符生成一个 int 值,然后将这些值相加。因此,A 是 1,B 是 2,C 是 3...而 ABC 是 6。然后将该 int 值乘以给定字符串/名称的索引号。因此,如果 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 文件,这是一个46K 的文本文件,包含在资源目录中找到的超过五千个名字。

第 1 部分:首先按字母顺序对列表进行排序。将此新文件保存为答案目录中的 p4aNames.txt。

第 2 部分: 使用 p4aNames.txt,获取每个名称的字母顺序值,并将该值乘以其在列表中的字母顺序位置,以获得名称分数。例如,当列表按字母顺序排序时,COLIN 是列表中的第 938 个名字,其值为 3 + 15 + 12 + 9 + 14 = 53。因此,COLIN 将获得 938 × 53 = 49714 的分数。将所有姓名分数的列表保存为 p4bNames.txt。

第 3 部分:文件中所有姓名分数的总和是多少?

显示输出和目录的图片链接:

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 {
public static void main() throws IOException {
new AlphabetizedList().sortingList();
}
public void sortingList() throws IOException {
FileReader fb = new FileReader("resources/names.txt");
BufferedReader bf = new BufferedReader(fb);
String out = bf.readLine();
out = out.substring(out.indexOf("\"")); //get rid of strange characters appearingbeforefirstname
// System.out.println(out); // output:
// "MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA"...

String[] sortedStr = out.split(",");
Arrays.sort(sortedStr);

PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("answers/p4aNames.txt")));

for (int i = 0; i < sortedStr.length; i++) {

pw.println(sortedStr[i]);
System.out.println(sortedStr[i]);// print to console just to see output

int score = 0;
// sortedStr[i].replaceAll("\"", ""); // I used this to try to remove the "s from my Strings
for (char ch: sortedStr[i].toUpperCase().toCharArray()) {
score += ((int)ch - 64); /* A is decimal 65 */
}
score = score * i; /* multiply by position in the list */
pw.println(score);
System.out.println(score);
}
bf.close();
fb.close();
pw.close();
}
}

最佳答案

你写的

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

Java String 是不可变的。该函数返回一个删除了引号的新字符串。您可以使用

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

它应该可以正常工作。

关于Java:从字符串中删除引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com