Java:d​​o While循环,同时接受所有有效输入,只有一个应该是

时间:2015-12-07 05:07:36

标签: java validation if-statement do-while

<script>
 var app = angular.module('myApp', []);
 app.controller('myCtrl', function($scope) {
  $scope.cctab= 1;  
  $scope.submitted = false;
  $scope.go = function() {
   if ($scope.signup_form.$valid) { // Submit as normal 
    $scope.cctab=2;
   } else {
    $scope.signup_form.submitted = true;
   } 
  }   
 });
</script>

</head>
<body ng-app="myApp" ng-controller="myCtrl">
 {{cctab}}
  <form name="signup_form" ng-submit="signupForm()"  novalidate>
   <div ng-show="cctab===1">
    <div class="row">
     <div class="large-12 columns">
      <label>Your name</label>
      <input type="text"    placeholder="Name"  name="name" ng-model="signup.name"   ng-minlength=3 ng-maxlength=20 required />
      <div class="error"    ng-show="signup_form.name.$invalid &&   signup_form.submitted">
     <small class="error"   ng-show="signup_form.name.$error.required">
     Your name is required.
     </small>
     <small class="error"
     ng-show="signup_form.name.$error.minlength">
     Your name is required to be at least 3 characters
     </small>
     <small class="error"
      ng-show="signup_form.name.$error.maxlength">
     Your name cannot be longer than    20 characters
     </small>
     </div>
     </div>
   </div>
   <input type="button" ng-click="go()" value="next" >
</div>
<div ng-show="cctab===2">
<input type="text" name="username" id="name" placeholder="lname"/>
<input type="button"  >
</div>
</form>
</body>

我有一个包含3个选项的菜单,通过输入“1”,“2”或3“,来选择每个选项,但是当输入3个有效输入的任意组合时他们之间的空格,例如“ 1 2 ”,它会接受它作为一个vaild输入。

有没有办法确保它一次只接受一个有效输入?

2 个答案:

答案 0 :(得分:2)

您的代码可以修改为输入整行,而不仅仅是第一组字符。

此行从输入缓冲区的开头获取用户输入,直到第一个空格或行尾字符,以先到者为准。

menuInput = console.next()

为整个线路用户提供以下内容。它将从输入缓冲区的开头获取输入,直到行尾字符。

menuInput = console.nextLine()

答案 1 :(得分:1)

您的问题:console.next()。这会从输入中获取下一个 令牌 - 这是空格分隔。所以“1 2”的输入不返回“1 2” - 它返回“1”,因为它到达空格并返回它之前的所有内容作为一个标记

如果要返回整行,请使用console.nextLine(),直到换行符(输入键)。这将使您的代码按照您的意愿运行。