2015-10-28 28 views
-10
bool ComputerType::validData() 
// PURPOSE: validates data 
// INPUT: idNumber, processor, RAMSize, DiskSize, ComputerType, cost, labLocation 
    // PRE: Reads all data and determines if they are valid or invalid 
    // OUTPUT:m_idNumber, m_processor, m_RAMSize, m_DiskSize, m_ComputerType, m_cost, m_labLocation 
    // POST: data is valid or invalid 
    // NOTE:None 
    { 
     if(m_idNumber >= MIN_ID && m_idNumber <= MAX_ID && ((m_RAMSize+m_ramSuffix) == "4GB" || (m_RAMSize+m_ramSuffix) == "8GB" 
     || (m_RAMSize+m_ramSuffix) == "16GB" || (m_RAMSize+m_ramSuffix) == "32GB" && ((m_DiskSize+m_diskSuffix) == "500GB" 
     || (m_DiskSize+m_diskSuffix) == "1TB" || (m_DiskSize+m_diskSuffix) == "2TB") && (m_computerType == "Laptop" 
     || m_computerType == "Desktop") && (m_cost >= MIN_COST && m_cost <= MAX_COST) && (m_labLocation == "SE145" 
     || m_labLocation = "SE135" || m_labLocation == "SE136"))) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

這是我的代碼運營商||不匹配在我的布爾函數

+1

我們至少知道這些變量是什麼類型。 –

+0

const int MAX_ID = 9999; const int MIN_ID = 1111; const float MAX_COST = 1500; const float MIN_COST = 0; –

+0

'm_RAMsSize','m_ramSuffix','m_DiskSize'等如何? –

回答

6
m_labLocation = "SE135" 

仔細查看該位。

但是你真正的問題應該是「我如何調試這樣的東西?」一種方法是將該龐大複雜的if語句分解爲若干較小的語句。這至少會減少你需要查看的代碼量。

例如:

bool validRam = 
    (m_RAMSize+m_ramSuffix) == "4GB" || 
    (m_RAMSize+m_ramSuffix) == "8GB" || 
    (m_RAMSize+m_ramSuffix) == "16GB" || 
    (m_RAMSize+m_ramSuffix) == "32GB"; 
bool validID = (m_idNumber >= MIN_ID && m_idNumber <= MAX_ID); 
    ... 
return validRam && validID && validType && validLocation && validDisk; 

基本上,你只是保持你弄就成越來越小的線得到一個錯誤的行,直到你只有一小片碼左右的。