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();
}
答案 0 :(得分:2)
首先,您只需要一个nextDouble
。 scanner.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)。