在do中切换case,而在dart中切换loop



问题:写一个程序来创建杂货店程序,其中我们有第一个空篮子。此外,无论用户想买什么,他/她都会把它放进篮子里。使用适当的控件结构和集合数据类型。错误在第6种情况下,当我按下6程序时,不要停止询问输入您的选择。我需要帮助来解决这个问题。我必须做的是当我按下6时程序应该关闭。

**Input:**
import 'dart:io';
void main(){
List basket=[];
int i;
String str;
stdout.write("How many items:");
int n=int.parse(stdin.readLineSync()!);
for(i=1;i<=n;i++)
{
stdout.write("Item $i :");
str=stdin.readLineSync()!;
basket.add(str);
}

print("Choose Operation:");
print("press 1: for insert new item");
print("press 2: for delete an item");
print("press 3: for update an item");
print("press 4: for view basket");
print("press 5: for clear basket");
print("press 6: for exit");
int ch=0;
do {
stdout.write("enter your choose:");
int ch=int.parse(stdin.readLineSync()!);
switch(ch){
case 1:
stdout.write("enter item name:");
str=stdin.readLineSync()!;
basket.add(str);
print("your list after insert item: $basket");
break;
case 2:
stdout.write("Enter item name which you when to delete:");
str=stdin.readLineSync()!;
basket.remove(str);
print("your list after deleted item: $basket");
break;
case 3:
stdout.write("Enter item name which you when to remove:");
str=stdin.readLineSync()!;
basket.remove(str);
stdout.write("Enter item name which you when to add:");
str=stdin.readLineSync()!;
basket.add(str);
print("your list after updated item: $basket");
break;
case 4:
print(basket);
break;
case 5:
basket.clear();
print(basket);
break;
case 6:
break;
default:
print("unexpected operation enter the right operation");
break;
}
} while (ch!=6);

}

输出:

How many items:2
Item 1 :milk
Item 2 :apple
Choose Operation:
press 1: for insert new item
press 2: for delete an item
press 3: for update an item
press 4: for view basket
press 5: for clear basket
press 6: for exit
enter your choose:6
enter your choose:6
enter your choose:

您的问题是在两个作用域(循环内部和外部(中声明了ch。因此,当您在循环中修改ch时,实际上是在修改此行定义的ch变量:

int ch = int.parse(stdin.readLineSync()!);

而不是:

int ch = 0;

您需要做的只是删除循环中线路的int部分:

ch = int.parse(stdin.readLineSync()!);

因为我们现在将设置循环外定义的变量ch的值,而不是创建一个同名的新变量。

最新更新