当前位置: 首页 > 知识库问答 >
问题:

使用charAt方法时,不会将它们添加为Int,也不会打印为string。会解释得更好

邵浩大
2023-03-14

好的,这是我的代码:

import java.util.Scanner;

public class CarRental {

    public static String model;
    public static int letternum;
    public static String plate;
    public static String letter;
    public static int total;              
    public static String alphabet = "abcdefghijklmnopqrstuvwxyz";

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        //System.out.println("Car Model:");
        //model = input.nextLine();
        System.out.println("License Plate: ");
        plate = input.nextLine();

        char one = plate.charAt(0);
        char two = plate.charAt(1);
        char three = plate.charAt(2);
        total = one + two + three;
        letternum = total % 24;

        char letter = alphabet.charAt(letternum);

        System.out.println("" + letter + total);

    }
}

这是怎么回事,我试图让它接受我的车牌输入,并在0、1和2的位置获取字符。车牌中的哪一个是三个字母。然后,我试图获取它们的ASCII值,将它们全部相加并将它们设置为int“总数”。然后要找到一个应该在总价值前面的字母,我使用%6找到总数的其余部分。然后它将获取该值,无论它是什么数字,假设它是4,它将获取字符串“alphabet”中的第4个字母并将其设置为char“字母”。然后它应该做的是打印出字母,然后是ASCII值的总数。

下面是一个示例,说明我的输入和预期结果,然后是实际结果。

车牌:CPR 607

输出:E836

我使用完全相同的车牌输出为:

车牌:CPR 607

N229

我不确定我做错了什么,但我最好的线索是,它是一个字符,它将其视为ASCII值,而不是字符串值(我实际上正在尝试获取)

如果有人能提出一些建议,那将是一个很大的帮助。不一定是代码,我可以从中吸取,但我应该如何做这件事的正确方式!

共有3个答案

魏宏邈
2023-03-14

如果将229的值与车牌中的607相加,则会得到你说应该得到的836数字,因此看起来总变量是正确的,但只需将其与输入的数字相加即可。

其他人所说的关于移动ASCII值的内容是用于确定输出中的第一个字符。

璩华辉
2023-03-14

更改这些行:

int one = (int) plate.charAt(0);
int two = (int) plate.charAt(1);
int three = (int) plate.charAt(2);

这将为您提供字符的实际ASCII值。

如果你想要别的东西,你必须从每个值中减去一个常数,就像乔霍普金斯在他的评论中所说明的那样。

减去64得到A=1、B=2等。

我明白你的问题了。

算法是获取前3个字符的ASCII值,并将其添加到数字(最后3个字符)中。

此外,你必须除以6才能得到字母A-E。你要除以24。

雷晋
2023-03-14

您需要获取字符串的第二部分(包含三个数字)并将其添加到总数中。您可以通过以下方式获取该值:

我nteger.parseInt(plate.split (" ")[1])

 类似资料:
  • 问题内容: 当我执行以下操作时, -包含一个元素,它是一个。 -不编译(错误:构造函数未定义) -包含7个元素,它们是对象 这是代码: 问题: 编译器为什么不自动将to 中的元素装箱并创建一个?这是什么原因呢?是我的愚蠢还是其他原因? 问题答案: 区别在于本身是,而是对对象的引用数组。 方法采用某种类型的变量参数,没有上限。该方法的擦除为。这意味着它将接受从扩展的任何类型的可变数量的参数。 由于不

  • 编辑:修复//。。。和//下面代码中的错误注释显示了答案 对于JavaScript专家来说,这可能是一件愚蠢而显而易见的事情。。。但如果我能知道这是怎么回事,我会很生气的。 这是我的t.js: ... 和我的HTML: ...大致显示的是: 当我运行这个程序时,Chrome浏览器的开发者工具JavaScript控制台上没有显示任何内容。(在本次学习中,我看到了很多其他的错误活动……所以我知道它确实

  • 我目前正在尝试一个来自“RealPython For the Web”一书的示例,在这本书中,您可以开始使用CGI和Python。 但是不知何故,浏览器不会编译python代码。 这是剧本: 但是当我通过localhost访问文件时,它只显示整个脚本的未解释(/纯)文本——而不是只显示“你好,世界” 我已经试过了:-哪条python--

  • 我的处境有点奇怪。。我能够通过以下方式将合同部署到本地Ganache实例: 块菌迁移——网络开发 但是,现在,当我对契约进行任何更改并运行相同的命令时,我的契约将被编译,但最后我得到了 网络更新 现在我不知道为什么会这样?合同不一样,尽管我只更改了几行代码和参数,返回值也一样,这可能是原因吗? 此外,我认为它将与以下方面一起工作: 松露部署-重置 但我得到的是: 现在很奇怪,当我运行带有--res

  • 我的主Java程序(MyFrame)应该使用其他类(MyPanel)启动的另一个JPanel更新其JFrame中的现有ContentPanel,具体取决于单击的JMenuItem以及新JPanel的参数。当我单击JMenuItem时,JPanel不会更新,它位于第一个项目的后面,在我调整窗口大小之前不在前景中。你能帮我解决这个问题吗?

  • 编辑:我想知道我是否添加了错误的bot?bot与用户的OAuth 2位于同一应用程序上。此bot添加了以下内容:https://discordapp.com/oauth2/authorize?client_id={我的id} 我与Discord有OAuth2连接,使用https://github.com/wohali/oauth2-discord-new这将返回discord用户和我的访问令牌。它