在int字段中输入String时如何重复菜单?

时间:2017-01-19 09:14:40

标签: java switch-statement

我有一个下面的菜单,我希望菜单在输入字符串而不是整数时重复。我知道什么时候字符串进入"在/ nextInt();"它马上就崩溃了。我想知道我能做些什么来阻止我现在所处的位置。

<div class="row">
                        <div class="col-sm-3">
                            <p>Testers<br>
                            <select id="productOne" name="productOne">
                              <option data-price="1249.99" value="1">PRO Battery Tester</option>
                              <option data-price="444.99" value="2">MDX335P</option>
                              <option data-price="494.99" value="3">MDX645</option>
                              <option data-price="694.99" value="4">MDX645P</option>
                              <option data-price="694.99" value="5">MDX655</option>
                              <option data-price="899.99" value="6">MDX655P</option>
                              <option data-price="949.99" value="7">MDX655P Start Stop</option>
                            </select></p>
                            <p>Chargers<br>
                            <select id="productTwo" name="productTwo">
                              <option data-price="1249.99" value="1">PRO 60</option>
                              <option data-price="1249.99" value="2">MXTS 70/50 EU-K</option>
                              <option data-price="333.33" value="3">MXS 25EC UK</option>
                              <option data-price="199.99" value="4">MXS 10EC UK</option>
                              <option data-price="633.33" value="5">MXTS 40 UK</option>
                              <option data-price="266.66" value="6">MXS 25 UK</option>
                              <option data-price="266.66" value="7">MXT 14 UK</option>
                              <option data-price="175.83" value="8">MXT 4.0 UK</option>
                            </select></p>
                        </div>
                        <div class="col-sm-3">
                            <p>Quantity<br><input type="number" name="productOneQ" min="0" step="any"  value="<?php if(!is_null($productOneQ)) { echo $productOneQ; } ?>"></p>
                            <p>Quantity<br><input id="productTwoQ" type="number" name="productTwoQ" min="0" step="any"  value="<?php if(!is_null($productTwoQ)) { echo $productTwoQ; } ?>"></p>
                        </div>
                        <div class="col-sm-3">
                            <p>Unit Price<br><input id="productOneP" type="number" name="productOneP" min="0" step="any"  value="<?php if(!is_null($productOneP)) { echo $productOneP; } ?>"></p>
                            <p>Unit Price<br><input id="productTwoP" type="number" name="productTwoP" min="0" step="any"  value="<?php if(!is_null($productTwoP)) { echo $productTwoP; } ?>"></p>
                        </div>
                          <div class="col-sm-3">
                              <p><span id="productOneT" class="total right">TOTAL: £<?php echo number_format($productOneTotal = $productOneP*$productOneQ, 2, '.', ','); ?></span></p>
                              <p><span id="productTwoT" class="total right">TOTAL: £<?php echo number_format($productTwoTotal = $productTwoP*$productTwoQ, 2, '.', ','); ?></span></p>
                          </div>
                        </div>
                    </div>

3 个答案:

答案 0 :(得分:1)

而不是直接调用scan.nextInt,尝试将该字符串转换为一个整数,捕获输入无效的异常menas然后设置 menuOneAnwser 到-1

do{
        System.out.println("");
        System.out.println("Please choose from the following options. " );
        System.out.println("");
        System.out.println("1. Do you want to use the default rotor settings?  ");
        System.out.println("2. Do you want to use the custom rotor settings?  ");
        System.out.println("3. Start over. ");
        System.out.println("");

         try {
           menuOneAnwser = Integer.parseInt(input);
        } catch (NumberFormatException e) {
        menuOneAnwser = -1;
        }


    }while(menuOneAnwser < 0 || menuOneAnwser > 3);

答案 1 :(得分:0)

您可以编写自己的tryParse版本(来自C#Int32.TryParse),它会尝试将输入解析为整数,但如果不是({{1},则会提醒您在这种情况下),然后您可以将其作为return null或任何您想要的方式处理:

String

答案 2 :(得分:0)

尝试并抓住方法:

menuOneAnwser = -1;
while (menuOneAnwser < 0 || menuOneAnwser > 3) {
    try {
        menuOneAnwser = in.nextInt();
    } catch (Exception e) {
         System.out.println("Please try again.." );
    }
}