我对逻辑运营商感到困惑,有人能帮助我清理我的烂摊子吗?多个参数?

时间:2014-07-15 16:17:29

标签: java operators logic

这是我在这里的第一篇文章,但我经常使用这个网站来帮助我解决我遇到的编码问题。我是一名中级Java程序员。我明年要上大学,而且我正在考虑辅修计算机科学。

我正在制作一个非常基本的模拟信用卡验证器,它读取信用卡,检查它是否有效,然后将信息通过电子邮件发送给用户。除了教育目的之外,这不能用于任何其他目的。

所以我有一些代码可以检查某人输入的信用卡字符串的多个条件。例如,正如您将看到的,它会检查起始数字,卡的名称和数字位数。它检查条件,如果满足它们,程序将继续,如果不是,它会发出错误并立即停止。我99%肯定我正确地输入了我的信息,但它无论如何都给了我错误,我在这里不知所措。

对不起,如果我打了这么多话,我又来了。所以我在这里求助于我的逻辑,谢谢!

 if((cardType.equals("Visa") && card.substring(0).equals("4")) && (length == 13 || length == 16)){
  System.out.println("Thank you, next step");
  cardValid = true;
  }
if((cardType.equals("Master Card")) && (card.substring(0,1).equals("51") || card.substring(0,1).equals("52") || card.substring(0,1).equals("53") || card.substring(0,1).equals("54") || card.substring(0,1).equals("55")) && (length == 16)){
  System.out.println("Thank you, next step");
  cardValid = true;
  }
if((cardType.equals("American Express") && card.substring(0,1).equals("37") && length == 15)){
     System.out.println("Thank you, next step");
     cardValid = true;
     }

  if(cardValid != true){
  System.out.println("ERROR");
  System.exit(0);
  }
  }

2 个答案:

答案 0 :(得分:3)

您没有正确使用substring方法。要将第一个字符作为子字符串,您需要使用the two-argument version of substring来提供开始索引(包括)和结束索引(不包括)。

  

子字符串从指定的beginIndex开始,并扩展到索引endIndex - 1处的字符。

     

<强>参数

     

beginIndex - 起始索引,包括在内。

     

endIndex - 结束索引,不包括。

one-argument version of substring从给定索引中获取字符串的其余部分的子字符串。)

  

子字符串以指定索引处的字符开头,并延伸到此字符串的末尾。

替换

card.substring(0).equals("4")

card.substring(0, 1).equals("4")

或者只是比较那里的角色。

card.charAt(0) == '4'

接下来,要获得前两个字符,请再次考虑结束索引是独占的这一事实。取代

card.substring(0,1).equals("37")

card.substring(0,2).equals("37")

答案 1 :(得分:0)

以下内容应该有效。 你有一些String.substring的语法错误。您可以在下面的java文档中引用String函数的完整列表:

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

  if((cardType.equals("Visa") && card.substring(0,1).equals("4")) && (length == 13 || length == 16)){
  System.out.println("Thank you, next step");
  cardValid = true;
  }
if((cardType.equals("Master Card")) && (card.substring(0,2).equals("51") || card.substring(0,2).equals("52") || card.substring(0,2).equals("53") || card.substring(0,2).equals("54") || card.substring(0,2).equals("55")) && (length == 16)){
  System.out.println("Thank you, next step");
  cardValid = true;
  }
if((cardType.equals("American Express") && card.substring(0,2).equals("37") && length == 15)){
     System.out.println("Thank you, next step");
     cardValid = true;
     }

  if(!cardValid){
  System.out.println("ERROR");
  System.exit(0);
  }
  }