java - 将字母从字符串转换为数字
问题描述
您好,我是 Java 新手,我很难将字母从字符串转换为数字,例如,用户将输入“我很好”,输出将变为 901-13015-11-1-25,因为我= 9 空间 = 0 A = 1 M = 13 空间 = 0 O = 15 K = 11 A = 1 Y = 25。我尝试使用 switch,但我很难,因为程序会打印我在字符串,这里是我创建的测试代码,我希望有人可以帮助我或给我提示和建议。
import java.util.*;
public class New2
{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Input the First string: ");
String fs = input.nextLine();
fstoInt(fs);
System.out.println(fs);
}
public static int fstoInt(String fs) {
int num = 0;
switch (fs) {
case "A":
num = 1;
break;
case "B":
num = 2;
break;
case "C":
num = 3;
break;
case "D":
num = 4;
break;
case "E":
num = 5;
break;
case "F":
num = 6;
break;
case "G":
num = 7;
break;
}
return num;
}
}
解决方案
输出将变为 901-13015-11-1-25,因为 I = 9 空间 = 0 A = 1 M = 13 空间 = 0 O = 15 K = 11 A = 1 Y = 25
我认为你没有正确阅读作业。
那将意味着:AA
变成11
. 而且K
……也变成了11
。不确定这是你想要的。
switch (fs) {
case "A":
假设它是连续的,“A”变为 1,“Z”变为 26:字符只是数字(它们的 unicode 值),并且这些字母是按顺序排列的。因此,您需要的不是巨大的开关块,而是:
int num = fs.charAt(0) - 'A' + 1;
这会将“A”变为 1,将“Z”变为 26。
正如评论已经说过的那样,您的问题fs
不仅仅是"A"
. 是"Hello"
。您需要遍历字符。随着空间得到特殊处理(变成 0),并且可能任何不是“A”-“Z”的东西都应该崩溃:
for (char c : fs.toCharArray()) {
int num = charToCode(c);
}
然后写charToCode:
public int charToCode(char c) throws IllegalArgumentException {
if (c == ' ') return 0;
if (c >= 'A' && c <= 'Z') return c - 'A' + 1;
throw new IllegalArgumentException(
"Only spaces and capital letters allowed");
}
推荐阅读
- c - 为什么循环迭代 6 次但条件给出 5 次
- python-3.x - 尝试运行代码分析参考列表以供阅读时出现问题
- javascript - TypeError: "exports" 是只读的 => 导出模块时调用另一个方法的方法
- javascript - 带有 Nodemailer 的 HTML2PDF
- java - UTF-8 字符 html 内容字符串到 pdf
- google-apps-script - 我可以使用谷歌应用脚本来开发谷歌浏览器扩展吗
- asp.net-mvc - 任何 .net 应用程序的 IIS 应用程序池崩溃 - PipelineModuleStepContainer 中的 NullReferenceException
- c++-cli - 如何在datagridview中合并单元格,然后将组合框添加到单元格被合并?
- mysql - 如何使用 SQL 在 MS 查询表中仅显示一个最大值(不是一组最大值)?
- java - 理解构造函数的问题,如 ArrayList.class 中的构造函数