猿问

扫描器输入的子串

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


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


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


牧羊人nacy
浏览 145回答 3
3回答

BIG阳

你应该使用in.nextLine()而不是in.next()nextScanner类中的method使用空格作为记号,只返回空格前的数据,因此可以使用nextLinemethod

烙印99

如前所述,使用scanner.nextLine()代替scanner.next().如果你想在字符串的最后一部分,是比较安全的使用是这样的: originalString.substring(originalString.length()-4);将 4 替换为您要输出的实际字符数。检查原始字符串的长度是否大于您减去的数量(在上面的示例中为 4)也是明智的。
随时随地看视频慕课网APP

相关分类

Java
我要回答