我會盡力解釋這一點,盡我所能,但請問我重申,如果它不明確。通過傳遞字符串從交換機獲取信息
我有兩個類,一個類只包含從其他類傳遞給它的設置。這些類被稱爲配置文件和設置,配置文件從一個XML文件中讀取設置,並將其傳遞到使用鍵和值這樣設置:從XML文件中讀取
public void readProfile()
{
// Gets our document ready to be read
setProfileDoc();
// Our Root element
Element root = getProfileDoc().getDocumentElement();
// The name of our profile
Node rootAttrItem = getProfileDoc().getChildNodes().item(0);
Node rootAttrName = rootAttrItem.getAttributes().getNamedItem("Name");
// Gets our Name value and stores into an array for later use.
String rootAttrValue = rootAttrName.getNodeValue();
addToArray(rootAttrValue, true);
// Our XML file contains <Database> and <Batch> with all information in between
NodeList dbNodes = root.getElementsByTagName("Database");
NodeList batchNodes = root.getElementsByTagName("Batch");
// Run through our <Database> tags and <Batch tags> and sends the information to Settings
for (int x = 0; x < dbNodes.getLength(); x++)
{
Element eElement = (Element) dbNodes.item(x);
NodeList userInfo = eElement.getChildNodes();
for (int y = 0; y < userInfo.getLength(); y++)
{
Node tempItem = userInfo.item(y);
if (!hasWhiteSpace(tempItem))
{
String tempKey = tempItem.getNodeName().toString().trim();
String tempValue = tempItem.getTextContent().toString().trim();
settings.setAllSettings(tempKey, tempValue);
}
}
}
for (int x = 0; x < batchNodes.getLength(); x++)
{
Element eElement = (Element) batchNodes.item(x);
NodeList batchInfo = eElement.getChildNodes();
for (int y = 0; y < batchInfo.getLength(); y++)
{
Node tempItem = batchInfo.item(y);
if (!hasWhiteSpace(tempItem))
{
String tempKey = tempItem.getNodeName().toString().trim();
String tempValue = tempItem.getTextContent().toString().trim();
settings.setAllSettings(tempKey, tempValue);
}
}
}
}
所有的設置去設置類,是設置像這樣:
public void setAllSettings(String keyIn, String valueIn)
{
// Holds our keyIn
String tempKey = keyIn;
String tempValue = valueIn;
// Depending on what String is brought in, the appropriate settings will be applied
switch (tempKey){
/*
* Our main settings
*/
case "FirstRun":
setFirstRun(tempValue);
case "LastProfile":
setLastProfile(tempValue);
case "LastStartedBrewName":
setLastStartedBrewName(tempValue);
case "LastStartedBrewNumber":
setLastStartedBrewNumber(tempValue);
case "LastFinishedBrewName":
setLastFinishedBrewName(tempValue);
case "LastFinishedBrewNumber":
setLastFinishedBrewNumber(tempValue);
case "CurrentBrewFile":
setCurrentBrewFile(tempValue);
case "ProfilePath":
setProfilePath(tempValue);
case "SensorFilePath":
setSensorFilePath(tempValue);
case "DBConnectionFilePath":
setDBConnectionFilePath(tempValue);
case "SensorReadIncremental":
setSensorReadIncremental(tempValue);
/*
* Our profile settings
*/
case "Profile Name":
setProfileName(tempValue);
case "Database Protocol":
setDatabaseProtocol(tempValue);
case "Url":
setDatabaseUrl(tempValue);
case "Port":
setDatabasePort(tempValue);
case "User":
setDatabaseUser(tempValue);
case "Pass":
setDatabasePass(tempValue);
case "Table":
setDatabaseTable(tempValue);
/*
* Our Batch settings
*/
case "Total":
setBatchTotal(tempValue);
case "Current":
setCurrentBatch(tempValue);
}
}
現在我可以使用的System.out.println()顯示從格式關鍵的XML文件中讀取所有的設置:價值與此正確顯示。所有信息被正確讀取並正確顯示。我可以在配置文件類和設置類中做到這一點,似乎它一切正常。
當我想重新使用這些設置我在個人資料的方法是這樣的:
public String getSetting(String whatSetting)
{
return settings.getSetting(whatSetting);
}
肚裏的方法中的設置是這樣:
public String getSetting(String getSetting)
{
String chosenValue = "";
// Depending on what String is brought in, the appropriate settings will be applied
switch (getSetting){
/*
* Our main settings
*/
case "FirstRun":
chosenValue = getFirstRun();
case "LastProfile":
chosenValue = getLastProfile();
case "LastStartedBrewName":
chosenValue = getLastStartedBrewName();
case "LastStartedBrewNumber":
chosenValue = getLastStartedBrewNumber();
case "LastFinishedBrewName":
chosenValue = getLastFinishedBrewName();
case "LastFinishedBrewNumber":
chosenValue = getLastFinishedBrewNumber();
case "CurrentBrewFile":
chosenValue = getCurrentBrewFile();
case "ProfilePath":
chosenValue = getProfilePath();
case "SensorFilePath":
chosenValue = getSensorFilePath();
case "DBConnectionFilePath":
chosenValue = getDBConnectionFilePath();
case "SensorReadIncremental":
chosenValue = getSensorReadIncremental();
/*
* Our profile settings
*/
case "Profile Name":
chosenValue = getProfileName();
case "Database Protocol":
chosenValue = getDatabaseProtocol();
case "Url":
chosenValue = getDatabaseUrl();
case "Port":
chosenValue = getDatabasePort();
case "User":
chosenValue = getDatabaseUser();
case "Pass":
chosenValue = getDatabasePass();
case "Table":
chosenValue = getDatabaseTable();
/*
* Our Batch settings
*/
case "Total":
chosenValue = getBatchTotal();
case "Current":
chosenValue = getCurrentBatch();
}
return chosenValue;
}
這裏的問題是我無法獲得正確的返回設置。它通常會返回空值或錯誤的值 - 其中一個設置是如果它是該程序的第一次運行,而不是返回「否」,將返回「10」
有關這個問題可能有什麼想法?
開始增加「打破」;到switch語句 – Taks