【问题标题】:I'm confused about Logical Operators, can someone help me clear up my mess? Multiple arguments?我对逻辑运算符感到困惑,有人可以帮我清理一下混乱吗?多个论点?
【发布时间】:2014-07-15 16:17:28
【问题描述】:

这是我在这里的第一篇文章,但我经常使用这个网站来帮助我解决遇到的编码问题。我是一名中级 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);
  }
  }

【问题讨论】:

  • 如果您愿意,我可以添加其余代码,大约 300 行。再次感谢。
  • 请注意,if(cardValid != true) 可以等效地写为if (!cardValid)。不过,rgettman 可以回答您的问题。
  • 只是效率的一点,不要每次都给你的卡子串。创建一个包含前两个字符的新字符串: String cardStart = card.substring(0, 2);

标签: java operators logic


【解决方案1】:

您没有正确使用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")

【讨论】:

  • 这似乎已经解决了 :) 谢谢。
【解决方案2】:

以下应该有效。 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);
  }
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    相关资源
    最近更新 更多