这不是实际的代码,但这是我想要做的。
for循环必须但是嵌套的if else循环应该根据count_final的值执行,count_final的值可以是1到3之间的随机值。
如果count_final的值为3,则应考虑所有if ... else循环。但是如果count_final的值是2,那么只有...(第一)否则if和else部分只被执行。如果count_final = 1,那么只有if和else部分被执行(而不是其他任何 - 如果)。
考虑在每个if ...中添加另一个if ... else并检查count_final,但是当count_final = 1时我没有得到count2和count3的值。 同样,当count_final = 2时,我没有得到count3的值。
如果您不理解我的问题,请在评论中提问。
int count_final=Session["abc"];
//count_final=1;
//count_final=2;
//count_final=3;
for(int i=1;i<=10;i++)
{
if ((count1 <= count5) && (count1 <= count6))
{
Label1.Text="Hello1";
}
else if (count2 <= count4 && count2 <= count6)
{
Label2.Text="Hello2";
}
else if (count3 <= count4 && count3 <= count5)
{
Label3.Text="Hello3";
}
else
{
Label1.Text="Hello1";
}
}
答案 0 :(得分:1)
似乎你收集了&#34;条件&#34;执行条件的数量取决于finalCount
的值。
var rules = new Func<string>[]
{
() => (count1 <= count5 && count1 <= count6) ? "Hello1" : null,
() => (count2 <= count4 && count2 <= count6) ? "Hello2" : null,
() => (count3 <= count4 && count3 <= count5) ? "Hello3" : null
};
Label1.Text = rules.Take(finalCount)
.Select(rule => rule())
.Where(result => result != null)
.DefaultIfEmpty("Hello1")
.First();
当然这个解决方案假设finalCount
总是1,2或3。
DefaultIfEmpty
正在扮演最后else
的角色 - 将在所有条件失败时使用。
答案 1 :(得分:0)
我建议扩展else if
声明的条件:
int count_final=Session["abc"];
//count_final=1;
//count_final=2;
//count_final=3;
for(int i=1; i<=10; i++)
{
if ((count1 <= count5) && (count1 <= count6))
{
Label1.Text="Hello1";
}
else if (count_final >= 2 && count2 <= count4 && count2 <= count6)
{
Label2.Text="Hello2";
}
else if (count_final >= 3 && count3 <= count4 && count3 <= count5)
{
Label3.Text="Hello3";
}
else
{
Label1.Text="Hello1";
}
}
当count_final == 1
这不会尝试评估count2
,count3
或count4
时(我理解这是一项要求),因为&&
不会对其进行评估左边有false
的右侧。
答案 2 :(得分:0)
如果我理解正确..这有点不太可能
只需为ifs添加更多条件!
public class Main extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
// stage.setFullScreen(true);
// stage.initStyle(StageStyle.UNDECORATED);
stage.show();
registerSceneSwitchHandler(stage, scene, "scene2.fxml");
}
private void registerSceneSwitchHandler(Stage stage, Scene scene, String resource) {
KeyCombination ctrlD = KeyCodeCombination.keyCombination("Ctrl+D");
scene.addEventFilter(KeyEvent.KEY_PRESSED, ke -> {
if (ctrlD.match(ke)) {
System.out.println("Key Pressed: " + ctrlD);
try {
Parent root = FXMLLoader.load(getClass().getResource(resource));
Scene newScene = new Scene(root);
String returnResource ;
if ("scene2.fxml".equals(resource)) {
returnResource = "FXMLDocument.fxml";
} else {
returnResource = "scene2.fxml";
}
registerSceneSwitchHandler(stage, newScene, returnResource);
stage.setScene(scene);
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
}
public static void main(String[] args) {
launch(args);
}
}
记住,根据我的理解,将会出现无法实现的循环,例如,如果initialize()
且不小于或等于 if ((count1 <= count5) && (count1 <= count6))
{
if (count_final == 3 || count_final == 2) Label1.Text="Hello1";
}
else if (count2 <= count4 && count2 <= count6)
{
if (count_final == 3) Label2.Text="Hello2";
}
else if (count3 <= count4 && count3 <= count5)
{
if (count_final == 3) Label3.Text="Hello3";
}
else
{
if (count_final == 3 || count_final == 1) Label1.Text="Hello1";
}
或count_final == 2
,则不会发生任何事情,与count5
相同,如果它匹配任何第一位,则最后一次不会发生。
答案 3 :(得分:0)
这是你在找什么?使用较少的if / else语句:
int count_final = Session["abc"]; // random between 1 and 3
for(int i=1; i <= 10; i++)
{
switch(count_final)
{
case 3:
Label1.Text="Hello1";
// no break; so all gets executed
case 2:
Label2.Text="Hello2";
case 1:
Label3.Text="Hello3";
default: Label1.Text="Hello1";
}
}