したがって、私のプログラムは、VisaまたはMasterCardに使用される16桁の追加形式を取ることになっています。ただし、実行すると、プログラムは入力の最後としてスペースを読み取ります。例:1234 5678 9012 3444を入力した場合、プログラムはスペースに入る前の数値の合計のみを加算します。次に、その文字列全体をスペースなしで入力すると、エラーコードが表示され続けます。私はここで何が間違っているのですか?
import java.util.Scanner;
public class assignment4
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int sum = 0, number, modulo;
String cardBrand;
System.out.print("Visa or MasterCard? ");
cardBrand = in.nextLine();
System.out.print("Please enter your 16 digit credit card number (no spaces): ");
number = in.nextInt();
while (number > 0)
{
int digit = number % 10;
sum = sum + digit;
number = number/10;
}
modulo = (sum % 10);
if (cardBrand.equals("Visa"))
{
if (modulo == 0)
{
System.out.println("This is a valid Visa card. Good job.");
}
else
{
System.out.println("This is an invalid Visa card number.");
}
}
else if (cardBrand.equals("MasterCard"))
{
if (modulo == 1)
{
System.out.println("This is a valid MasterCard.");
}
else
{
System.out.print("This is an invalid MasterCard card number.");
}
}
}
}