簡體   English   中英

反轉字符串的測試用例

[英]test cases for reversing a string

我正在嘗試進行質量檢查采訪,我想處理盡可能多的測試用例。 我相信我的方法適用於每種情況,但當輸入為null我不確定如何處理該異常。 甚至在代碼運行之前,編譯器會先給我一個錯誤。 因此,我不確定如何處理該異常。 我看了四周, catch荷蘭國際集團的NullPointerException ,不建議。 我將如何處理null輸入。 另外,如果其他人可以想到其他測試用例,我將很樂意進行測試並對其進行研究!

這是我的測試用例:

""
"abcdef"
"abbbba"
null

不太確定如何處理

轉義字符

"\n"  --> "n\"
"\t"  --> "t\"

特殊字符,例如

áe  -->  eá 

碼:

public static String reverseStr(String str) {
    int len = str.length();
    if (len <= 0) {
        return "Empty String";
    }
    char[] strArr = new char[len];
    int count = 0;
    for (int i = len - 1; i >= 0; i--) {
        strArr[count] = str.charAt(i);
        count++;
    }
    return new String(strArr);
}

經過進一步的建議后,這里是更新的代碼:

public static String reverseStr(String str) {
    if ( str == null ) {
          return null;
    }
    int len = str.length();
    if (len <= 0) {
        return "";
    }
    char[] strArr = new char[len];
    int count = 0;
    for (int i = len - 1; i >= 0; i--) {
        strArr[count] = str.charAt(i);
        count++;
    }
    return new String(strArr);
}

如果string為null,則編譯器不會給您錯誤,但是在運行代碼時,您將收到NullPointerException。 您的reverseStr方法可以檢查

if ( str == null ) {
  return "null string passed in";
}

或者你可以做類似的事情

int len = (str != null) ? str.length() : 0

現在,空字符串和空字符串的長度都將為0。這取決於您是否想以不同的方式對待空字符串和空字符串。

對於null情況,您可以首先添加簡單測試if(str==null) throw new IllegalArgumentException("arg must be not null")並向聲明中添加throws IllegalArgumentException

您應該在方法中做的第一件事是檢查無效性:

public static String reverseStr(String str) {
    if(str==null){
        return null;
    }
    else{
       //the rest of your code goes here
    }
}

我不明白,如果字符串為空,為什么您會返回"Empty String" 這意味着輸入字符串為"gnirtS ytpmE"

如果字符串為空,則應返回一個空字符串。 如果字符串為null ,則可能應返回null (或引發異常)。

if (str == null) return null;
int len = str.length();
if (len == 0) return "";

當NPE(NullPointerException)為null時,它來自訪問參數'str'。 如果將參數替換為'null',這是有意義的,因此看起來像這樣:int len = null.length(); 這沒有多大意義。 “ ||” 或運算符不同於“ |” 或運算符,因為如果第一個元素為true,則不會評估另一個操作數,因為可以確定整個結果。 在這種情況下利用此功能,可以確保安全地調用str.isEmpty(),因為它不能為空。

public static String reverseStr(String str) {
    if(null == str || str.isEmpty()){
        return "Empty String";
    }
    int len = str.length();

    char[] strArr = new char[len];
    int count = 0;
    for (int i = len - 1; i >= 0; i--) {
        strArr[count] = str.charAt(i);
        count++;
    }
    return new String(strArr);
}

暫無
暫無

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

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