0

クレジットカード番号を入力できるプログラムを作成しようとしています.26で割った残りの数字を使用して、最後にASCII文字/記号を付けて番号を吐き出します。私のコードのように感じます.プログラムを実行してもシンボルは表示されませんが、正しいです。デバッグ エラーなどは発生しませんが、(char) シンボルが表示されません。それが示すのは数字だけです。誰か助けてくれませんか?

これが私がこれまでに持っているものです:

import java.util.*;
import java.text.*;
import java.math.*;

public class Program{

public static void main (String []args){

Scanner keyboard = new Scanner(System.in);

int CC, CC2, CC3, CC4;


System.out.println("Enter your credit card number 2 numbers at a time (XX XX XX XX)");
CC=keyboard.nextInt();
CC2=keyboard.nextInt();
CC3=keyboard.nextInt();
CC4=keyboard.nextInt();

 int CC6;

CC6= (CC+CC4+CC2+CC3)%26;

char CC7;

CC7 = (char)CC6;


System.out.println("The correct number and code is:" +CC+CC2+CC3+CC4+CC7);    

}
}
4

3 に答える 3

1

私はあなたが探していると信じています

Character.toChars(CC6);

テストするときは、実際に見栄えの良い値にマップされる値を使用していることを確認してください。たとえば、Character.toChars(65)結果は「A」になります。

詳細については、次を参照してください: Java で int のストリームを char に変換する

于 2013-09-26T03:53:06.263 に答える
0

コンソールでうまく表示されないキャラクターがあります。おそらく空白としてレンダリングされています。26 の残りを使用しているように見えるので、文字 (az) にしたいと推測しています。文字の ASCII 文字は、大文字が 65、小文字が 97 から始まります。

この変更を行う

CC6= (CC+CC4+CC2+CC3)%26+65;

A と Z の間の文字が出力されます。

ここで完全な ASCII テーブルを表示できますhttp://www.asciitable.com/

于 2013-09-26T03:53:19.930 に答える
0

それらを別々に印刷すると、コンソールに奇妙なシンボルが表示されるのがわかります。

System.out.println("The correct number and code is:" + CC + CC2 + CC3 + CC4);
System.out.println(CC7);

問題は、 mod 26を実行していて、この範囲に非文字キーの ASCII コードが含まれているため、0 ~ 25 の範囲でのみ CC7 を取得することです。

実際の文字 (またはその場合は特殊文字) は ASCII コードから始まります33こちらのASCIIテーブルを見てください。

于 2013-09-26T03:55:29.253 に答える