如何使用不同的方法验证扫描仪输入?

时间:2017-02-12 18:39:27

标签: java

import java.util.Scanner

public class Editable {

/* Return true if amount is within MIN_AMOUNT and MAX_AMOUNT 
*/
public static boolean isValidAmount(double amount) {
    return amount > MIN_AMOUNT && amount < MAX_AMOUNT;
}

/* Asks user to input amount until isValidAmount is true.
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(system.in);

}

我是Java的新手,而且我一直在努力解决这个问题。 我在main中要求用户输入,我需要它继续询问用户输入,直到isValidAmount返回true。我尝试了多种不同的解决方案,但似乎无法让它发挥作用。

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    double inputAmount = 0;
    try {
        while (!isValidAmount(inputAmount)) {
            System.out.println("Enter amount:");
            inputAmount = scanner.nextDouble();
            scanner.next();
        }
    } catch (Exception e) {
        System.out.println("Input error.");
        scanner.next();
    }

2 个答案:

答案 0 :(得分:2)

首先,您只需要一个nextDoublescanner.next()将读取下一个值并将其丢弃。另外,请尝试使用do while循环:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    double inputAmount = 0;
    try {
        do {
            System.out.println("Enter amount:");
            inputAmount = scanner.nextDouble();
        } while (!isValidAmount(inputAmount));
    } catch (Exception e) {
        System.out.println("Input error.");
        scanner.next();
    }
}

我想在提示用户之前,您的inputAmount可能已经是一个有效值。在检查条件之前,do while循环将始终执行括号之间的语句。如果条件已经为假,while循环将不会执行括号中的语句。

答案 1 :(得分:0)

只需评论var Busboy = require('busboy'); var gfs = require('gridfs-stream')(mongoose.connection.db, mongoose.mongo) //express middleware: function (req, res) { var busboy = new Busboy({ headers: req.headers, limits: { fileSize: 1024, files: 1 } }); busboy.on('file', function (fieldname, file, filename, encoding, mimetype) { var ws = gfs.createWriteStream({ filename: filename, content_type: mimetype}); ws.on('error', function(err) { console.error(err); res.send(500, err); }); ws.on('finish', () => {/*do something when streaming ends*/}); file.pipe(ws); } busboy.on('error', function(err) { console.error(err); res.send(500, err); }); req.pipe(busboy); } 即可。你不需要它。你的程序是完美的。 (我假设scanner.next();被声明为> 0)。