Java 使用扫描仪读取和验证数字
首先,我必须说我对Java相当陌生 我需要使用Java 使用扫描仪读取和验证数字,java,Java,首先,我必须说我对Java相当陌生 我需要使用Scanner输入一个Double值,并需要检查它是否在给定范围内。如果它在给定的范围内,它应该返回值,否则它应该要求重新输入一个新的数字 我尽了最大努力,但还是有编译错误。请告诉我应该如何在我的代码中解决这个问题 class Find { public static void main(String args[]) { System.out.println(val(1, 100)); Scanner inp
Scanner
输入一个Double
值,并需要检查它是否在给定范围内。如果它在给定的范围内,它应该返回值,否则它应该要求重新输入一个新的数字
我尽了最大努力,但还是有编译错误。请告诉我应该如何在我的代码中解决这个问题
class Find {
public static void main(String args[]) {
System.out.println(val(1, 100));
Scanner input = new Scanner(System.in);
double number;
System.out.print("Enter a number: ");
number = input.nextDouble();
}
private static String val(int minValue, int maxValue) {
if (number < minValue || number > maxValue) {
return "try again";
} else {
return (number);
}
}
}
类查找{
公共静态void main(字符串参数[]){
系统输出println(val(1100));
扫描仪输入=新扫描仪(System.in);
双数;
System.out.print(“输入一个数字:”);
number=input.nextDouble();
}
私有静态字符串val(int-minValue,int-maxValue){
如果(数字<最小值| |数字>最大值){
返回“重试”;
}否则{
报税表(编号);
}
}
}
几点:
val
函数当前不知道名为number
的变量。您希望将编号
值传递给val
函数val
函数的返回类型为String
,因此它必须返回String
私有静态字符串val(双数字、双最小值、双最大值){
如果(数字<最小值| |数字>最大值){
返回“重试”;
}
否则{
返回字符串.valueOf(number);
}
}
几点:
val
函数当前不知道名为number
的变量。您希望将编号
值传递给val
函数val
函数的返回类型为String
,因此它必须返回String
私有静态字符串val(双数字、双最小值、双最大值){
如果(数字<最小值| |数字>最大值){
返回“重试”;
}
否则{
返回字符串.valueOf(number);
}
}
您可以去掉大部分代码,然后执行以下操作:
System.out.print( "Enter a number: " );
number = input.nextDouble();
while ((number < minValue) || (number > maxValue)) {
System.out.println( "Number out of range." );
System.out.print( "Enter a number: " );
number = input.nextDouble();
}
System.out.print(“输入一个数字:”);
number=input.nextDouble();
while((数字<最小值)| |(数字>最大值)){
System.out.println(“数字超出范围”);
System.out.print(“输入一个数字:”);
number=input.nextDouble();
}
下面是一个完整的程序,显示了该代码段的作用:
import java.util.Scanner;
public class Find {
public static double getNum (
double minVal,
double maxVal,
String prompt,
String errPrompt
) {
Scanner input = new Scanner(System.in);
System.out.print (prompt);
double number = input.nextDouble();
while ((number < minVal) || (number > maxVal)) {
System.out.print (errPrompt);
number = input.nextDouble();
}
return number;
}
public static void main(String args[]) {
System.out.println (getNum (1, 100, "Enter a number: ", "Try again: "));
}
}
import java.util.Scanner;
公共类查找{
公共静态双getNum(
双米瓦尔,
双maxVal,
字符串提示符,
字符串错误提示
) {
扫描仪输入=新扫描仪(System.in);
系统输出打印(提示);
double number=input.nextDouble();
而((数字<最小值)| |(数字>最大值)){
System.out.print(错误提示);
number=input.nextDouble();
}
返回号码;
}
公共静态void main(字符串参数[]){
System.out.println(getNum(1100,“输入一个数字:”,“重试:”);
}
}
您可以去掉大部分代码,然后执行以下操作:
System.out.print( "Enter a number: " );
number = input.nextDouble();
while ((number < minValue) || (number > maxValue)) {
System.out.println( "Number out of range." );
System.out.print( "Enter a number: " );
number = input.nextDouble();
}
System.out.print(“输入一个数字:”);
number=input.nextDouble();
while((数字<最小值)| |(数字>最大值)){
System.out.println(“数字超出范围”);
System.out.print(“输入一个数字:”);
number=input.nextDouble();
}
下面是一个完整的程序,显示了该代码段的作用:
import java.util.Scanner;
public class Find {
public static double getNum (
double minVal,
double maxVal,
String prompt,
String errPrompt
) {
Scanner input = new Scanner(System.in);
System.out.print (prompt);
double number = input.nextDouble();
while ((number < minVal) || (number > maxVal)) {
System.out.print (errPrompt);
number = input.nextDouble();
}
return number;
}
public static void main(String args[]) {
System.out.println (getNum (1, 100, "Enter a number: ", "Try again: "));
}
}
import java.util.Scanner;
公共类查找{
公共静态双getNum(
双米瓦尔,
双maxVal,
字符串提示符,
字符串错误提示
) {
扫描仪输入=新扫描仪(System.in);
系统输出打印(提示);
double number=input.nextDouble();
而((数字<最小值)| |(数字>最大值)){
System.out.print(错误提示);
number=input.nextDouble();
}
返回号码;
}
公共静态void main(字符串参数[]){
System.out.println(getNum(1100,“输入一个数字:”,“重试:”);
}
}
连同关于您的val
函数的注释,您不知道数字是什么,似乎以下是您实际希望程序执行的操作:
import java.util.Scanner;
class Find {
public static void main (String args[]) {
Scanner input = new Scanner(System.in);
double number;
do {
System.out.print("Enter a number: ");
number = input.nextDouble();
} while(!isValid(number));
}
private static boolean isValid(double number){
int minValue = 1;
int maxValue = 100;
if (number < minValue || number > maxValue ) {
System.out.println("Try again");
return false;
}
else {
return true;
}
}
}
import java.util.Scanner;
类查找{
公共静态void main(字符串参数[]){
扫描仪输入=新扫描仪(System.in);
双数;
做{
System.out.print(“输入一个数字:”);
number=input.nextDouble();
}而(!isValid(number));
}
私有静态布尔值isValid(双倍数字){
int minValue=1;
int maxValue=100;
如果(数字<最小值| |数字>最大值){
System.out.println(“重试”);
返回false;
}
否则{
返回true;
}
}
}
连同关于您的val
函数的注释,您不知道数字是什么,似乎以下是您实际希望程序执行的操作:
import java.util.Scanner;
class Find {
public static void main (String args[]) {
Scanner input = new Scanner(System.in);
double number;
do {
System.out.print("Enter a number: ");
number = input.nextDouble();
} while(!isValid(number));
}
private static boolean isValid(double number){
int minValue = 1;
int maxValue = 100;
if (number < minValue || number > maxValue ) {
System.out.println("Try again");
return false;
}
else {
return true;
}
}
}
import java.util.Scanner;
类查找{
公共静态void main(字符串参数[]){
扫描仪输入=新扫描仪(System.in);
双数;
做{
System.out.print(“输入一个数字:”);
number=input.nextDouble();
}而(!isValid(number));
}
私有静态布尔值isValid(双倍数字){
int minValue=1;
int maxValue=100;
如果(数字<最小值| |数字>最大值){
System.out.println(“重试”);
返回false;
}
否则{
返回true;
}
}
}
这是我使用的a类零件。它非常简单,如果输入字符串,它就不会中断。如果你需要,你可以找到更多关于它的信息
public int readInt(String prompt, int min, int max)
{
Scanner scan = new Scanner(System.in);
int number = 0;
//Run once and loop until the input is within the specified range.
do
{
//Print users message.
System.out.printf("\n%s > ", prompt);
//Prevent string input crashing the program.
while (!scan.hasNextInt())
{
System.out.printf("Input doesn't match specifications. Try again.");
System.out.printf("\n%s > ", prompt);
scan.next();
}
//Set the number.
number = scan.nextInt();
//If the number is outside range print an error message.
if (number < min || number > max)
System.out.printf("Input doesn't match specifications. Try again.");
} while (number < min || number > max);
return number;
} public int readInt(String prompt, int min, int max)
{
Scanner scan = new Scanner(System.in);
int number = 0;
//Run once and loop until the input is within the specified range.
do
{
//Print users message.
System.out.printf("\n%s > ", prompt);
//Prevent string input crashing the program.
while (!scan.hasNextInt())
{
System.out.printf("Input doesn't match specifications. Try again.");
System.out.printf("\n%s > ", prompt);
scan.next();
}
//Set the number.
number = scan.nextInt();
//If the number is outside range print an error message.
if (number < min || number > max)
System.out.printf("Input doesn't match specifications. Try again.");
} while (number < min || number > max);
return number;
}
public int readInt(字符串提示,int-min,int-max)
{
扫描仪扫描=新扫描仪(System.in);
整数=0;
//运行一次并循环,直到输入在指定范围内。
做
{
//打印用户混乱