我剛剛開始學習統一,并在我的一本 c# 學習書中看到了這個任務。我必須使用 foreach 中的 if 陳述句創建一個代碼,以便它檢查我是否能負擔得起字典中的每個專案,但我不知道如何檢查所有專案,甚至是特定專案,所以我可以寫 if 3 次例如。
目前,我的日志顯示所有專案及其價值,但顯示我是否只能負擔第一個。我應該在 IF 括號中放入什么來檢查每個值出現后的日志?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LearningCurve : MonoBehaviour
{
public int currentGold = 3;
void Start()
{
Dictionary<string, int> itemInventory = new Dictionary<string, int>()
{
{"Potions", 4 },
{"Daggers", 3 },
{"Lockpicks", 1 }
};
foreach (KeyValuePair<string, int> itemCost in itemInventory)
{
Debug.LogFormat("Item {0} - {1}g", itemCost.Key, itemCost.Value);
if (currentGold >= itemCost.Value)
{
Debug.Log("I can afford that!");
}
}
}
uj5u.com熱心網友回復:
我不確定我是否理解了這個問題,但我會嘗試為您提供有關您發布的代碼中發生的情況的基本概述。讓我們從 if 開始,if 塊的作業原理很簡單,您在 C# 中放置一個 boolean bool,它可以有兩個不同的值 true 和 false,在 if(BOOL VALUE) 內部,如果值為 true,它將運行{ CODE TO RUN} 之間的代碼。讓我們稍微重構一下代碼,看看這里發生了什么。
Dictionary<string, int> itemInventory = new Dictionary<string, int>()
{
{"Potions", 4 },
{"Daggers", 3 },
{"Lockpicks", 1 }
};
foreach (KeyValuePair<string, int> itemCost in itemInventory)
{
Debug.LogFormat("Item {0} - {1}g", itemCost.Key, itemCost.Value);
bool iCanBuyitem = currentGold >= itemCost.Value;
Debug.LogFormat("{0} >= {1} is {2}", currentGold, itemCost.Value,iCanBuyitem);
if (iCanBuyitem)
{
Debug.LogFormat("I can buy {0} ", itemCost.Key);
}else
{
Debug.LogFormat("I can't buy {0} ", itemCost.Key);
}
}
與編程中的數學不同,符號 >= 不是等式符號,而是稱為二元運算子的東西,它接受字典中 c# 中許多數字型別之一的兩個變數,它們是整數 Dictionary<string, int> 并產生一個布林值告訴您一個數字是否大于或等于第二個數字,這是一種類似于以下簽名的方法public bool FirstIsBiggerOrEqualToSecond(int first, int second)
這是一個演示輸出https://dotnetfiddle.net/oWlYlY的 dotnet fiddle
uj5u.com熱心網友回復:
閱讀問題標題您的意思是,如果要在 IF 中放置兩個或多個條件,則必須使用&&
operator:
if (currentGold >= itemCost.Value && currentGold <= 15)
{
Debug.Log("I have enough gold to buy this item and it's cheap.");
}
uj5u.com熱心網友回復:
測驗代碼片段在控制臺中提供了兩個日志:“我負擔得起!”。通過這個,我確定問題出在您的代碼片段實作中。我建議您檢查是否在控制臺中啟用了折疊。
我附上了一個 Imgur 鏈接以供參考。 控制臺日志
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/476238.html
下一篇:如何使用自定義代碼創建統一專案