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 の場所にある文字を取得しようとしています。ナンバー プレートでは 3 文字になります。次に、それらの ASCII 値を取得し、それらをすべて加算して、int の「合計」に設定しようとしています。次に、合計値の前にあるはずの文字を見つけるために、% 6 を使用して合計の残りを見つけます。次に、その値を取得し、それが 4 であるとします。文字列 "alphabet" の 4 番目の文字を char "letter" に設定します。次に、ASCII 値の合計に続いて文字を出力する必要があります。

これは、予想される結果を含む私の入力の例であり、その後に実際の結果が続きます。

ナンバー プレート: CPR 607

出力: E836

まったく同じナンバープレートを使用した私の出力は次のとおりです。

ナンバー プレート: CPR 607

n229

何が間違っているのかわかりませんが、私の最良の手がかりは、それが文字であるという事実であり、文字列値ではなくASCII値のように扱っているということです(実際に取得しようとしています)

誰かがいくつかのヒントを提案できれば、それは大きな助けになるでしょう. 必ずしもコードからリーチできるわけではありませんが、これを正しい方法で行うにはどうすればよいでしょうか。

4

4 に答える 4

1

文字列の2番目の部分(3つの数字を含む)を取得して、合計に追加します。あなたはその価値を次のように取ることができます:

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値が得られます。

他の何かが必要な場合は、ジョンホプキンスのコメントに示されているように、各値から定数を減算する必要があります。

64を引くと、A = 1、B=2などになります。

私はあなたの問題を見ます。

アルゴリズムは、最初の3文字のASCII値を取得し、それらを数値(最後の3文字)に追加することです。

また、A〜Eの文字を取得するには、6で除算する必要があります。24で除算しています。

于 2012-12-07T20:36:02.200 に答える
0

ナンバープレートの607に229の値を追加すると、取得するはずの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 に答える