首页 > 解决方案 > 扫描器输入的子串

问题描述

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

(在您评论说“重复”或“查找”之前,我有。我没有得到任何适用的答案或在我目前允许在我的编程课程中使用的范围内。)

我试图让程序使用扫描仪类接受用户输入,然后打印出输入的一部分,但只有尾端。在此示例中,我让扫描仪询问借记卡号码,并希望将输入打印回为“**** **** **** 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);

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

java.lang.StringIndexOutOfBoundsException: String index out of range: -11

标签: javasubstringjava.util.scannerbluej

解决方案


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

next类中的方法Scanner使用空格作为标记,并且只返回空格之前的数据,因此您可以使用nextLine方法


推荐阅读