java - 扫描器输入的子串
问题描述
如何从扫描仪输入中获取子字符串?
(在您评论说“重复”或“查找”之前,我有。我没有得到任何适用的答案或在我目前允许在我的编程课程中使用的范围内。)
我试图让程序使用扫描仪类接受用户输入,然后打印出输入的一部分,但只有尾端。在此示例中,我让扫描仪询问借记卡号码,并希望将输入打印回为“**** **** **** 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
解决方案
你应该使用in.nextLine()
而不是in.next()
next
类中的方法Scanner
使用空格作为标记,并且只返回空格之前的数据,因此您可以使用nextLine
方法
推荐阅读
- c# - 如何使用 Scaffold-DbContext 只生成 DBContext 或 Tables
- c# - 无法创建 SSL/TLS 安全通道“http://www.rtvs.sk/televizia/archiv”
- python - 使用函数名作为命令
- java - 使用 Java 的 volatile 关键字的不一致
- c# - Httpclienthandler Webproxy 值没有改变
- c++ - 当例程“free”在 C++ 中的“try”块中失败时会发生什么
- bash - ${i%.*} 在这种情况下做了什么?
- c# - C# Devexpress 面板
- amazon-web-services - AWS 教育账户,但 Sage Maker 在训练模型时出错
- java - findAll(Pageable) 返回错误的排序顺序