扫描仪输入的子字符串

Cri*_*nic 0 java substring java.util.scanner bluej

如何从扫描仪输入中获取子字符串?

(在您发表评论“重复”或“查找它”之前,我已经知道了。我没有得到适用的答案,也不在我目前在编程课程中可以使用的范围之内。)

我正在尝试使程序使用扫描仪类接受用户输入,然后打印出部分输入,但仅打印尾端。在此示例中,我让扫描仪要求借记卡号,并希望将输入打印回为“ **** **** **** nnnn”(nnnn是来自扫描仪输入的数字)。这是我所拥有的:

import java.util.Scanner;
public class CyberlifePurchase
{
    public static void main(String[ ] args)
    {
        Scanner payment = new Scanner(System.in);
        System.out.println("Please enter your debit card number: ");
        String cardNumber = in.next();
        System.out.println();   
        String concealedCardNumber = cardNumber.substring(15);

        System.out.println("Card Number: " + "**** **** **** " + concealedCardNumber);
Run Code Online (Sandbox Code Playgroud)

当我编译所有内容时,没有编译错误,但是当我运行程序时,这是输入卡号(nnnn nnnn nnnn nnnn格式)后得到的结果:

java.lang.StringIndexOutOfBoundsException: String index out of range: -11
Run Code Online (Sandbox Code Playgroud)

Pra*_*een 5

您应该使用in.nextLine()而不是in.next()

nextScanner类中的method 使用空格作为标记,并且只返回空格之前的数据,因此可以使用nextLinemethod