Java 如何通过字符串的第一个数值识别字符串

Java 如何通过字符串的第一个数值识别字符串,java,identifier,credit-card,luhn,Java,Identifier,Credit Card,Luhn,我正在开发一个信用卡验证程序,但我还想实现一个代码,用它的第一个数值来识别输入的信用卡类型如何通过字符串的第一个数值识别字符串? import java.util.Scanner; 公共停车库{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(System.in); //提示用户以长整数形式输入信用卡卡号 System.out.print(“以长整数形式输入信用卡卡号:”); long cardname=input.nextLong(); System.out.pri

我正在开发一个信用卡验证程序,但我还想实现一个代码,用它的第一个数值来识别输入的信用卡类型如何通过字符串的第一个数值识别字符串?


import java.util.Scanner;
公共停车库{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
//提示用户以长整数形式输入信用卡卡号
System.out.print(“以长整数形式输入信用卡卡号:”);
long cardname=input.nextLong();
System.out.println(
cardnumber+“是”+(是否有效(cardnumber)?“有效”:“无效”);
}
/**如果卡卡号有效,则返回true*/
公共静态布尔值有效(长卡号){
布尔有效=
(getSize(cardnumber)>=13&&getSize(cardnumber)=0;i-=2){
sum+=getDigit(Integer.parseInt(num.charAt(i)+“”)*2);
}
回报金额;
}
/**如果此卡号为一位数,则返回此卡号,否则,
*返回两位数之和*/
公共静态整数getDigit(整数卡号){
如果(卡号<9)
返回卡号;
其他的
返回卡号/10+卡号%10;
}
/**返回cardnumber中奇数位数的和*/
公共静态int sumOfOddPlace(长卡号){
整数和=0;
字符串num=cardnumber+“”;
对于(int i=getSize(cardnumber)-1;i>=0;i-=2){
sum+=Integer.parseInt(num.charAt(i)+“”;
}
回报金额;
}
/**如果数字d是cardnumber的前缀,则返回true*/
公共静态布尔前缀匹配(长卡号,int d){
返回getPrefix(cardnumber,getSize(d))==d;
}
/**返回d中的数字卡号*/
公共静态int getSize(长d){
字符串num=d+“”;
返回num.length();}
/**返回cardnumber中的第一个k cardnumber数字。如果
*cardnumber中的cardnumber位数小于k,返回cardnumber*/
公共静态长getPrefix(长卡号,整数k){
如果(getSize(cardnumber)>k){
字符串num=cardnumber+“”;
返回Long.parseLong(num.substring(0,k));
}
返回卡号;
}

您可以这样做

public boolean isNumeric(String str)
{
    return str.matches("-?\\d+(\\.\\d+)?");  
}

public void randomName(String str){
   for (int i =0 ;i<str.Length;i++){
      if(isNumeric(str.charAt(i)+"")){
         //Do THING
         break;
      }
   }
}
public boolean isNumeric(字符串str)
{
返回str.matches(“-?\\d+(\.\\d+)”;
}
公共名称(字符串str){

对于(inti=0;i你可以这样做

public boolean isNumeric(String str)
{
    return str.matches("-?\\d+(\\.\\d+)?");  
}

public void randomName(String str){
   for (int i =0 ;i<str.Length;i++){
      if(isNumeric(str.charAt(i)+"")){
         //Do THING
         break;
      }
   }
}
public boolean isNumeric(字符串str)
{
返回str.matches(“-?\\d+(\.\\d+)”;
}
公共名称(字符串str){

对于(inti=0;i信用卡以特定数字开头,如

VISA -4
MASTERCARD -5
AMEX - 3
DISCOVER -6
在我发布我的答案后,我在github上找到了这个。

信用卡以某些数字开头,如

VISA -4
MASTERCARD -5
AMEX - 3
DISCOVER -6
在我发布我的答案后,我在github上找到了这个。

我不确定是否会发生这种情况,但使用
long
存储号码时,您可能会遇到以0开头的CCs问题,因为它将从号码中删除。“将信用卡卡号作为长整数输入:”–我要说的是,只有极少数停车场和信用卡用户知道长整数是什么。知道的人会问:哪个处理器体系结构和/或语言?)“如何通过字符串的第一个数值来识别字符串?”您是否在询问如何获取字符串的第一个字符?我不确定是否会发生这种情况,但使用
long
存储数字时,您可能会遇到以0开头的CCs问题,因为它将从数字中删除。“将信用卡卡号作为长整数输入:”–我想说,只有极少数停车场和信用卡用户知道长整数是什么。知道的人会问:哪个处理器体系结构和/或语言?)“我如何通过字符串的第一个数值来识别字符串?”你是在问如何获取字符串的第一个字符吗?