0

好的,这是我的代码:

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 个字母并将其设置为字符“字母”。然后它应该做的是打印出字母,然后是 ASCII 值的总数。

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

车牌:CPR 607

输出:E836

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

车牌:CPR 607

n229

我不确定我做错了什么,但我最好的线索是它是一个字符这一事实,它把它当作它的 ASCII 值,而不是它的字符串值(我实际上试图得到)

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

4

4 回答 4

1

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

Integer.parseInt(plate.split("")[1])

于 2012-12-07T20:46:30.637 回答
0

更改这些行:

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

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

如果你想要别的东西,你必须从每个值中减去一个常数,正如 jonhopkins 在他的评论中所说明的那样。

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

我看到了你的问题。

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

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

于 2012-12-07T20:36:02.200 回答
0

如果您将 229 值添加到车牌中的 607 中,您会得到您说应该得到的 836 数字,所以看起来您的总变量是正确的,但您只需要将它添加到数字从输入。

其他人所说的关于转换 ASCII 值的内容是在您确定输出中的第一个字符时。

于 2012-12-07T20:45:49.000 回答
-1
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 = Integer.parseInt(one) + Integer.parseInt(two) + Integer.parseInt(three);
    letternum = total % 24;

    char letter = alphabet.charAt(letternum);

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

}

你忘了把它转换成整数

于 2012-12-07T20:36:33.300 回答