首页 > 解决方案 > 在 dart 中的 do while 循环中切换大小写

问题描述

问题:编写一个程序来创建我们有第一个空篮子的杂货程序。此外,用户想要购买的任何物品都放入该篮子。使用适当的控制结构和集合数据类型。 当我按 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:

标签: dartswitch-statementdo-while

解决方案


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

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

并不是:

int ch = 0;

您需要做的只是删除int循环内的部分行:

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

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


推荐阅读