【问题标题】:Comparing two numbers using if/else statements使用 if/else 语句比较两个数字
【发布时间】:2016-01-21 04:41:52
【问题描述】:

我很难弄清楚如何使用 if/else 语句比较两个数字来确定哪个更大,哪个更小。

就目前而言,每当我编译我的代码时,我都会收到此错误:

类 NumberCompare 中的方法 setNums 不能赋予应用类型;必需:无参数,找到:int,int;原因:实际参数列表和形式参数列表的长度不同

我很确定我的课做得不好。这就是我目前拥有的。

NumberCompare类:

import static java.lang.System.*;

public class NumberCompare
{
    private int numberA, numberB;
    public NumberCompare(int a, int b)
    {
        numberA=a;
        numberB=b;
    }
    public void setNums ()
    {
        numberA = 45;
        numberB = 45;
    }
    public int getLargest ()
    {
        if(numberA > numberB)
            System.out.println(+numberA+" is greater than " +numberB);
        return numberA;
    }
    public int getSmallest ()
    {
        if(numberA < numberB)
            System.out.println(+numberB+" is less than " +numberA);
        return numberB;
    }
}

还有跑步者类:

import static java.lang.System.*;
public class NumberCompareRunner
{
    public static void main( String args[] )
    {
        NumberCompare test = new NumberCompare(5,6);
        out.println(test);
        out.println("largest == " + test.getLargest());
        out.println("smallest == " + test.getSmallest()+"\n\n");
        test.setNums(45,45);
        out.println(test);
        out.println("largest == " + test.getLargest());
        out.println("smallest == " + test.getSmallest()+"\n\n");
        test.setNums(-25,10324);
        out.println(test);
        out.println("largest == " + test.getLargest());
        out.println("smallest == " + test.getSmallest()+"\n\n");
    }
}

简而言之,我的问题是我无法将两个数字相互比较。感谢您的任何帮助。我也为我之前不成熟的发布这个问题深表歉意。

【问题讨论】:

  • 努力告诉我们问题出在哪里,我们会尽力提供帮助。
  • 您遇到的问题或错误是什么?

标签: java


【解决方案1】:

移除 setnums 方法并每次创建新对象:

import static java.lang.System.*;

public class NumberCompare
{
    private int numberA, numberB;
    public NumberCompare(int a, int b)
    {
        numberA=a;
        numberB=b;
    }
    public int getLargest ()
    {
        if(numberA > numberB)
            System.out.println(+numberA+" is greater than " +numberB);
        return numberA;
    }
    public int getSmallest ()
    {
        if(numberA < numberB)
            System.out.println(+numberB+" is less than " +numberA);
        return numberB;
    }
}

像这样使用它:

import static java.lang.System.*;
public class NumberCompareRunner
{
    public static void main( String args[] )
    {
        NumberCompare test = new NumberCompare(5,6);
        out.println(test);
        out.println("largest == " + test.getLargest());
        out.println("smallest == " + test.getSmallest()+"\n\n");
        test = new NumberCompare(45,45);
        out.println(test);
        out.println("largest == " + test.getLargest());
        out.println("smallest == " + test.getSmallest()+"\n\n");
        test = new NumberCompare(-25,10324);
        out.println(test);
        out.println("largest == " + test.getLargest());
        out.println("smallest == " + test.getSmallest()+"\n\n");
    }
}

【讨论】:

    【解决方案2】:

    您应该按如下方式创建您的 NumberCompare 类:

    import static java.lang.System.*;
    
    public class NumberCompare
    {
        // Rest of the code here
        public void setNums (int a, int b){
            numberA = a;
            numberB = b;
        }
        public int getLargest (){
            if(numberA > numberB){
                System.out.println(+numberA+" is greater than " +numberB);
                return numberA;
            }
            else{
                System.out.println(+nuberB+" is greater than " +numberA);
                return numberA;
            }
        }
        public int getSmallest ()
        {
            if(numberA < numberB){
                System.out.println(+numberA+" is less than " +numberB);
                return numberA;
            }
            else{
                System.out.println(+numberB+" is less than " +numberA);
                return numberB;
            }
        }
    }
    

    您遇到的问题是由于 setNums 方法,不接受正确的参数。此外,我不禁注意到其余方法的实现错误,因此我也为这些方法提出了解决方案。 那是因为在您的原始代码中,您只检查 A 是否小于或大于 B,并且您返回 A,因为它不在 if 语句的代码块中。为每个 if 添加 else 语句并处理 B 是您的结果的情况相当容易。

    【讨论】:

      【解决方案3】:

      按照定义设置数字的方法:

      public void setNums ()
      {
          numberA = 45;
          numberB = 45;
      }
      

      不允许用户指定新的。

      更改签名以允许用户设置新号码:

      public void setNums (int a, int b)
      {
          numberA = a;
          numberB = b;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-16
        • 2018-03-29
        • 1970-01-01
        • 2022-01-09
        • 1970-01-01
        • 2018-07-10
        • 1970-01-01
        • 2016-11-14
        相关资源
        最近更新 更多