当前位置: 首页 > 知识库问答 >
问题:

如何将经过验证的用户输入传递给方法参数?

钱宇
2023-03-14

我有两门课:MyNumbers和MyScanner。我试图将经过验证的输入传递给calculateSum(int x,int y)方法,以便在MyScanner类中打印最终结果,但我不知道如何从MyScanner类获取用户输入,将它们传递给MyNumbers类中的validate()方法,以便calculateSum()方法执行其任务。

P.S.validate()方法应为void且无参数,但calculateSum()方法应为string,以字符串形式返回结果并使用两个参数。我还希望validate()方法提示用户输入并验证值,以确保它们在特定范围内。此方法需要不断提示,直到用户插入有效数字。

如何在不引入另一个变量/实现setters/将变量作为参数传递给validate()方法的情况下实现这一点?

public class MyNumbers {
    
    int number1;
    int number2;
    
    public void validate() {
    if (number1 >= 10 && number1 <= 50) {
         if(number2 >= 5 && number2 <= 20){
        System.out.println(calculateSum(number1, number2));
       }
    } 
            
    else {
        System.out.println("Number should be between 10 and 50");
    }
  }


public String calculateSum(int x, int y) {
    
    this.number1 = x;
    this.number2 = y;

    validate();

    return "Sum: " + number1 + number2;
  }
 }


public class MyScanner {

public static void main(String[] args) {

MyNumbers myNumbers = new myNumbers();
Scanner scanner = new Scanner(System.in);

int option = scanner.nextInt();

do{
    switch(option){
        case 1:
            System.out.println("Enter number 1");
            int x = scanner.nextInt();
            System.out.println("Enter number 2");
            int y = scanner.nextInt();
            myNumbers.calculateSum(x, y);
            break;
    }
}

while(option!=0);
  }
 }
 

共有1个答案

田骁
2023-03-14

编辑:



import java.util.*; 

class MyNumbers {
    
    int number1;
    int number2;
    
    public void validate() {
         int valid=0;
         int x;
         int y;
         
         Scanner s = new Scanner(System.in);
         System.out.println("Welcome!");
         
         do{
                System.out.println("Enter Number 1: ");
                   
                x = s.nextInt();
                            
                if (x >= 10 && x <= 50) {
                    
                     valid=2;
                
                }
                 else {
                     
                    System.out.println("Number 1 should be between 10 and 50");
                }
                 
         }while(valid!=2);
        
        do {
        
            System.out.println("Enter Number 2: ");
             y = s.nextInt();
            
            if(y >= 5 && y <= 20){
                System.out.println(calculateSum(x, y));
                valid=3;
            }
            
             else {
                System.out.println("Number 2 should be between 5 and 20");
            }
            
        
        }while(valid!=3);
    }


    public String calculateSum(int x, int y) {
        
        this.number1 = x;
        this.number2 = y;
    
        return "Sum: " + (number1 + number2);
    }
}

public class Main {

    public static void main(String[] args) {
    
    MyNumbers myNumbers = new MyNumbers();
    myNumbers.validate();

    }
 }

试试看


import java.util.*; 

class MyNumbers {
    
    int number1;
    int number2;
    
    public void validate(int number1 , int number2) {
        
        if (number1 >= 10 && number1 <= 50) {
             if(number2 >= 5 && number2 <= 20){
            System.out.println(calculateSum(number1, number2));
           }
        } 
                
        else {
            System.out.println("Number should be between 10 and 50");
        }
    }


    public String calculateSum(int x, int y) {
        
        this.number1 = x;
        this.number2 = y;
    
        return "Sum: " + number1 + number2;
    }
}


public class Main {

    public static void main(String[] args) {
    
    MyNumbers myNumbers = new MyNumbers();
    Scanner scanner = new Scanner(System.in);
    
    int option = scanner.nextInt();
    switch(option){
                case 1:
                    System.out.println("Enter number 1");
                    int x = scanner.nextInt();
                    System.out.println("Enter number 2");
                    int y = scanner.nextInt();
                    myNumbers.validate(x, y);
                    myNumbers.calculateSum(x, y);
                    break;
            }
    
  
    }
 }
 类似资料:
  • 嘿,伙计们,我是一个完全的初学者,在Java,我正在尝试编写一个程序,以这样的方式:油漆公司已经确定,每115平方英尺的墙壁空间,一加仑油漆和8小时的劳动将需要。 这家公司的人工费为每小时18美元。 编写一个程序,允许用户输入需要粉刷的房间数量和每加仑油漆的价格。它还应该要求每个房间有平方英尺的墙壁空间。程序应该具有返回以下数据的方法: 所需油漆的加仑数 所需劳动时数 油漆成本 人工费 喷漆作业的

  • 问题内容: 在SQL Server 2014中,我试图创建一个动态的WHERE子句。 我已将查询构建为字符串,但是当我尝试使用sp_executesql执行查询时,出现以下错误:提示 13您必须声明标量变量“ @desde”。 我不知道如何使sp_executesql识别输入参数。 问题答案: 代替 使用 您必须定义在动态查询中使用的参数,例如 请参考sp_executesql 否则,您可以将动态

  • 第一个数字:3第二个数字:4和:7

  • 假设我们有一个varargs方法,它接受作为输入。将普通字符串[]数组传递给该函数没有问题,但不幸的是,当该方法以其他字符串开头时,它不起作用: 我知道简单地将静态Strings前缀到列表中并传递它是没有问题的,但是在我的特定fc情况下,我的代码的可读性会受到影响,所以如果可能的话,我希望以任何方式避免这种情况。 有可能吗?

  • 第一个数字:3第二个数字:4和:7

  • 问题内容: 基本上我有一个ArrayList的位置: 在此之下,我调用以下方法: getMap()方法中的参数为: 我遇到的问题是我不确定如何在整个方法列表中传递该方法。 我试过了 但是getMap不接受,因为它不接受Objects []。 现在,如果我使用 它会完美地工作…但是我需要以某种方式传递所有位置…我当然可以继续添加等等,但是数组的大小会有所不同。我只是不习惯整个概念 最简单的方法是什么