Matlab 创建一个脚本,允许用户重复输入值,直到输入每个案例

Matlab 创建一个脚本,允许用户重复输入值,直到输入每个案例,matlab,Matlab,我正在尝试创建一个脚本,允许用户重复输入x值,直到输入每个案例。我有三种可能的情况: 当x去除所有计数器变量时,输入案例1。改为使用boolean/logical标志,指示何时执行了特定案例。此外,您还需要检查每个案例本身是否已经执行了特定案例。不要将此作为单独的外部if语句来执行。这可能就是你最初写的那句话不起作用的原因。因此,做这样的事情。我将把%//NEW放在我添加新代码的地方: case1 = false; %// NEW case2 = false; %// NEW ca

我正在尝试创建一个脚本,允许用户重复输入x值,直到输入每个案例。我有三种可能的情况:


  • x去除所有
    计数器
    变量时,输入案例1。改为使用
    boolean/logical
    标志,指示何时执行了特定案例。此外,您还需要检查每个案例本身是否已经执行了特定案例。不要将此作为单独的外部
    if
    语句来执行。这可能就是你最初写的那句话不起作用的原因。因此,做这样的事情。我将把
    %//NEW
    放在我添加新代码的地方:

      case1 = false; %// NEW
      case2 = false; %// NEW
      case3 = false; %// NEW
      while ~case1 || ~case2 || ~case3 %// NEW: While at least one of the cases has not been run...
          x = input('Please enter an x value > 0: ');
          while x < 0
              x = input('Invalid! Please enter another x value > 0: ');
          end
    
          if x <= 7 %// NEW
             if case1 %// NEW: Check if case #1 has already been run
                 %// If it has, show this to the user, then continue in the loop
                 fprintf('Case #1 has already been run!\n');
                 continue; %// NEW - Continue through the loop.  Don't do anything else
             end
    
             case1 = true; %// NEW - Set to true if we haven't run this case already
             y = x.^3 + 3;
             fprintf('Case 1: y = %d \n',y);
    
          elseif 7<x && x<=12
             if case2 %// NEW - Repeat like Case #1 here
                fprintf('Case #2 has already been run!\n'); %// NEW
                continue; %// NEW
             end
    
             case2 = true; %// NEW
             y = (x-3)./2;
             fprintf('Case 2: y = %d \n',y);
    
          elseif x>12
             if case3 %// NEW - Repeat like Case #3 here
                 fprintf('Case #3 has already been run!\n'); %// NEW
                 continue; %// NEW
             end
    
             case3 = true; %// NEW
             y = 4.*x+3; 
             fprintf('Case 3: y = %d \n',y);
           end %// End if
       end %// End while
       disp('All cases have been entered!') %// Display once all cases have been entered
    

    我输入-1,尝试看看它是否拒绝负数,这是正确的。我输入了一个数字,它是
    <7
    ,也就是3。它成功地进入了第一个案例。我试着输入另一个数字,即
    <7
    ,即2。它给出的信息是,案例1已经运行。我试着输入一个介于7和12之间的数字。。。所以我试了8次。它相应地生成案例2。我用10再试一次,它说案例2已经运行了。最后,我尝试14,也就是
    >12
    ,它生成Case#3并在所有Case成功运行时停止

    我相信这就是你想要的

      if counter1>=1 || counter2>=1 || counter3>=1
          disp('That case has been run already');
    
      case1 = false; %// NEW
      case2 = false; %// NEW
      case3 = false; %// NEW
      while ~case1 || ~case2 || ~case3 %// NEW: While at least one of the cases has not been run...
          x = input('Please enter an x value > 0: ');
          while x < 0
              x = input('Invalid! Please enter another x value > 0: ');
          end
    
          if x <= 7 %// NEW
             if case1 %// NEW: Check if case #1 has already been run
                 %// If it has, show this to the user, then continue in the loop
                 fprintf('Case #1 has already been run!\n');
                 continue; %// NEW - Continue through the loop.  Don't do anything else
             end
    
             case1 = true; %// NEW - Set to true if we haven't run this case already
             y = x.^3 + 3;
             fprintf('Case 1: y = %d \n',y);
    
          elseif 7<x && x<=12
             if case2 %// NEW - Repeat like Case #1 here
                fprintf('Case #2 has already been run!\n'); %// NEW
                continue; %// NEW
             end
    
             case2 = true; %// NEW
             y = (x-3)./2;
             fprintf('Case 2: y = %d \n',y);
    
          elseif x>12
             if case3 %// NEW - Repeat like Case #3 here
                 fprintf('Case #3 has already been run!\n'); %// NEW
                 continue; %// NEW
             end
    
             case3 = true; %// NEW
             y = 4.*x+3; 
             fprintf('Case 3: y = %d \n',y);
           end %// End if
       end %// End while
       disp('All cases have been entered!') %// Display once all cases have been entered
    
    Please enter an x value > 0: -1
    Invalid! Please enter another x value > 0: 3
    Case 1: y = 30 
    Please enter an x value > 0: 2
    Case #1 has already been run!
    Please enter an x value > 0: 8
    Case 2: y = 2.500000e+00 
    Please enter an x value > 0: 10
    Case #2 has already been run!
    Please enter an x value > 0: 14
    Case 3: y = 59 
    All cases have been entered!