簡體   English   中英

如何在另一個 class 中使用 Boolean 方法檢查字符串參數?

[英]How to use a Boolean method from one class in another to check a string parameter?

我正在為學校分配 java,它是關於電話卡系統的,每種類型的電話卡都有不同的課程,我被困在使用這個提供的 CallZone class 來檢查區域是否放在參數是有效的,我不知道如何在電話卡class中調用它的isValidZone方法,比如SuperNA10Card class。

我不確定這是否是使用 CallZone class 檢查參數區域是否有效的正確方法。

if(zone.equals("canada")){return true;} 
or
if(CallZone.isValidZone(zone) == true){return true}

這是 CallZone class:

public final class CallZone {

     public static boolean isValidZone(String zone) {
         zone = zone.toLowerCase();
         return (zone.equals("canada") ||
             zone.equals("usa") ||
             zone.equals("europe") ||
             zone.equals("asia") ||
             zone.equals("anz") ||
             zone.equals("latinam") ||
             zone.equals("africa")
         );
     }
}

這是電話卡類之一,SuperNA10 class,使用它來檢查區域是否有效:

public class SuperNA10 extends PhoneCard{
    final double canMinRate = 0.05;
    final double usMinRate = 0.10;
    final double weeklyMainFee = 0.50;

    public SuperNA10(long no, int passwd){
      super(no, passwd,10.00) //invokes superclass class constructor sets no, passwd and balance to 10.00
    }

    public boolean allowed(String zone){
     if(CallZone.isValidZone(zone) ){
        return true;
      }else{
       return false;
     }


    }

}

我不確定如何獲取 CallZone class 來檢查 SuperNA10 class 方法中允許的參數是否有效,如果我的問題不清楚或引起混淆,也很抱歉,這是我第一次發布。

由於您有特定數量的呼叫區域,您可以使用這樣的enum

public enum CallZone {

    CANADA, USA, EUROPE; //add any number of zones here

    public static boolean isValid(String zone) {
        return Stream.of(values())
                .anyMatch(s -> s.toString().equalsIgnoreCase(zone));
    }
}

您還可以查看使用CallZone.valueOf(zone)以及捕獲IllegalArgumentException ,而不是像上面那樣使用Stream 但我不喜歡在非異常情況下使用異常。

然后在您的SuperNA10 class 中,您可以像這樣使用它:

public boolean allowed(String zone) {
    return CallZone.isValid(zone);
}

暫無
暫無

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

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