簡體   English   中英

我對邏輯運算符感到困惑,有人可以幫我清除混亂嗎? 有多個論點?

[英]I'm confused about Logical Operators, can someone help me clear up my mess? Multiple arguments?

這是我在這里的第一篇文章,但是我經常使用此站點來幫助我解決遇到的編碼問題。 我是中級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);
  }
  }

您沒有正確使用substring方法。 要得到第一個字符作為一個字符串,你需要使用的兩個參數的版本substring ,以提供一個開端指數(含)和結束索引(不包括)。

子字符串從指定的beginIndex開始,並擴展到索引endIndex-1處的字符。

參數

beginIndex-起始索引(含)。

endIndex-結束索引(不包括)。

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")

以下應該工作。 您在使用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);
  }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM