Java 给定2个整数值,找出哪一个更接近15

Java 给定2个整数值,找出哪一个更接近15,java,Java,我正在尝试编写一个程序,它接受2个大于0的整数值,并打印最接近15的数值。如果两者都已结束,则打印0。这是一个假定的知识问题,但是它让我感到非常困惑,并且我的代码看起来是错误的 我试着用谷歌搜索类似的例子,但有些对我来说没有意义,所以我觉得最好问问 public class W221 { public static void main(String[] args) { while (JPL.test()) { Scanner kb = new

我正在尝试编写一个程序,它接受2个大于0的整数值,并打印最接近15的数值。如果两者都已结束,则打印0。这是一个假定的知识问题,但是它让我感到非常困惑,并且我的代码看起来是错误的

我试着用谷歌搜索类似的例子,但有些对我来说没有意义,所以我觉得最好问问

    public class W221 {
        public static void main(String[] args) {
            while (JPL.test()) {

  Scanner kb = new Scanner (System.in);
  int num = kb.nextInt();
  int num2 = kb.nextInt();
  int value1;
  int value2;

  if(num <= 15 || num2 <= 15){
    value1 = 15 - num;
    value2 = 15 - num2;

    if(value1>value2){
      if(value1 > 0){
        System.out.println(" " + num2);
      }
    }
    else if(value1<value2){
      if(value2 > 0){
        System.out.println(" " + num);
      }
    }
  }
  else{
    System.out.println(0);
                }
            }
        }
    }
公共类W221{
公共静态void main(字符串[]args){
while(JPL.test()){
扫描仪kb=新扫描仪(System.in);
int num=kb.nextInt();
int num2=kb.nextInt();
int值1;
int值2;
如果(数字0){
系统输出打印项数(“+num2”);
}
}
else if(值1 0){
System.out.println(“+num”);
}
}
}
否则{
系统输出打印项次(0);
}
}
}
}
编辑:我正在重新制作没有数组的代码,将很快更新代码

编辑2:我已经更新了代码,请参考上文

编辑3:我已完成删除数组,除“value1或value2”整数为负数外,所有操作都成功。我已经查看了回复,但我对如何更改代码以修复此问题感到困惑

将代码更改为:

if(first>second){
  return num;
}
else if(first<second){
  return num;
}
if(第一个>第二个){
返回num;
}
否则,如果(首先将代码更改为:

if(first>second){
  return num;
}
else if(first<second){
  return num;
}
if(第一个>第二个){
返回num;
}

else if(first如果您使用java内置的Math.max方法,并首先进行一点验证,则会更干净。例如:

private static int maxNonNegativeLessThan15(int a, int b) {
    // Set either or both to 0 in case of negative or >= 15
    if (a >= 15 || a < 0) {
        a = 0;
    }
    if (b >= 15 || b < 0) {
        b = 0;
    }
    return Math.max(a, b);
}
private static int maxNonNegativeLessThan15(int a,int b){
//如果为负或>=15,则将其中一个或两个设置为0
如果(a>=15 | | a<0){
a=0;
}
如果(b>=15 | | b<0){
b=0;
}
返回Math.max(a,b);
}
编辑:以输入为例添加代码

public static void main(String[] args) {
    while(true) {
        Scanner in = new Scanner(System.in);
        int n1 = in.nextInt();
        int n2 = in.nextInt();
        if (n1 < 0 || n1 >= 15) {
            n1 = 0;
        }
        if (n2 < 0 || n2 >= 15) {
            n2 = 0;
        }
        System.out.println(Math.max(n1,n2));
    }
}
publicstaticvoidmain(字符串[]args){
while(true){
扫描仪输入=新扫描仪(系统输入);
int n1=in.nextInt();
int n2=in.nextInt();
如果(n1<0 | | n1>=15){
n1=0;
}
如果(n2<0 | | n2>=15){
n2=0;
}
系统输出println(数学最大值(n1,n2));
}
}

如果您先使用java内置的Math.max方法并进行一点验证,它会更干净。例如:

private static int maxNonNegativeLessThan15(int a, int b) {
    // Set either or both to 0 in case of negative or >= 15
    if (a >= 15 || a < 0) {
        a = 0;
    }
    if (b >= 15 || b < 0) {
        b = 0;
    }
    return Math.max(a, b);
}
private static int maxNonNegativeLessThan15(int a,int b){
//如果为负或>=15,则将其中一个或两个设置为0
如果(a>=15 | | a<0){
a=0;
}
如果(b>=15 | | b<0){
b=0;
}
返回Math.max(a,b);
}
编辑:以输入为例添加代码

public static void main(String[] args) {
    while(true) {
        Scanner in = new Scanner(System.in);
        int n1 = in.nextInt();
        int n2 = in.nextInt();
        if (n1 < 0 || n1 >= 15) {
            n1 = 0;
        }
        if (n2 < 0 || n2 >= 15) {
            n2 = 0;
        }
        System.out.println(Math.max(n1,n2));
    }
}
publicstaticvoidmain(字符串[]args){
while(true){
扫描仪输入=新扫描仪(系统输入);
int n1=in.nextInt();
int n2=in.nextInt();
如果(n1<0 | | n1>=15){
n1=0;
}
如果(n2<0 | | n2>=15){
n2=0;
}
系统输出println(数学最大值(n1,n2));
}
}

我没有检查值是否小于0。希望您可以自己做

import java.util.*;

public class W221 {
    public static void main(String[] args) {
        int firstVal = 0;
        int secondVal = 0;
        Scanner kb = new Scanner(System.in);
        System.out.println("Give your first value: ");
        firstVal = kb.nextInt();
        System.out.println("firstVal is: " + firstVal);
        System.out.println("Give your second value: ");
        secondVal = kb.nextInt();
        System.out.println("secondVal is: " + secondVal);
        System.out.println(checkMe(firstVal, secondVal));
    }

    private static int checkMe(int firstVal, int secondVal) {
        if (Math.max(firstVal, secondVal) > 15) {
            return 0;
        } else
            return Math.max(firstVal, secondVal);
    }
}
输出:
我没有检查值是否小于0。希望您可以自己做

import java.util.*;

public class W221 {
    public static void main(String[] args) {
        int firstVal = 0;
        int secondVal = 0;
        Scanner kb = new Scanner(System.in);
        System.out.println("Give your first value: ");
        firstVal = kb.nextInt();
        System.out.println("firstVal is: " + firstVal);
        System.out.println("Give your second value: ");
        secondVal = kb.nextInt();
        System.out.println("secondVal is: " + secondVal);
        System.out.println(checkMe(firstVal, secondVal));
    }

    private static int checkMe(int firstVal, int secondVal) {
        if (Math.max(firstVal, secondVal) > 15) {
            return 0;
        } else
            return Math.max(firstVal, secondVal);
    }
}
输出:
我终于解决了这个问题。这可能不是最好的方法,但它确实有效

  public class W221 {
  public static void main(String[] args) {
  while (JPL.test()) {
  Scanner kb = new Scanner (System.in);
  int num = kb.nextInt();
  int num2 = kb.nextInt();
  int value1;
  int value2;

  if(num <= 15 || num2 <= 15){
    value1 = 15 - num;
    value2 = 15 - num2;

    if(value1 < 0){
      value1 = 50;
    }
    if(value2 < 0){
      value2 = 50;
    }
    if(value1>value2){
        System.out.println(" " + num2);
    }
    else if(value1<value2){
        System.out.println(" " + num);
    }
  }
  else{
    System.out.println(0);
  }}}}
公共类W221{
公共静态void main(字符串[]args){
while(JPL.test()){
扫描仪kb=新扫描仪(System.in);
int num=kb.nextInt();
int num2=kb.nextInt();
int值1;
int值2;

如果(num我最终能够解决这个问题。这可能不是最好的方法,但它是有效的

  public class W221 {
  public static void main(String[] args) {
  while (JPL.test()) {
  Scanner kb = new Scanner (System.in);
  int num = kb.nextInt();
  int num2 = kb.nextInt();
  int value1;
  int value2;

  if(num <= 15 || num2 <= 15){
    value1 = 15 - num;
    value2 = 15 - num2;

    if(value1 < 0){
      value1 = 50;
    }
    if(value2 < 0){
      value2 = 50;
    }
    if(value1>value2){
        System.out.println(" " + num2);
    }
    else if(value1<value2){
        System.out.println(" " + num);
    }
  }
  else{
    System.out.println(0);
  }}}}
公共类W221{
公共静态void main(字符串[]args){
while(JPL.test()){
扫描仪kb=新扫描仪(System.in);
int num=kb.nextInt();
int num2=kb.nextInt();
int值1;
int值2;

if(num)不是有效的Java。您正在查找
else if(condition)
。您应该做的是格式化代码,使其可读性将“else”更改为“else if”还有,为什么要接受数组?如果需要两个int参数,请将它们声明为method@AaronDavis我已经删除了代码的数组方面。希望这是正确的方法?现在更好了,但您也没有验证负数(例如-10和3将返回-10)。这不是有效的Java。您正在寻找
否则如果(条件)
。您应该做的是格式化代码,使其可读。将“else”更改为“else if”还有,为什么要接受数组?如果需要两个int参数,请将它们声明为method@AaronDavis我已经删除了代码的数组方面。希望这是正确的方法?现在更好了,但您也没有验证负数(例如-10和3将返回-10)。谢谢你,我在执行时遇到了一些问题,但无论如何还是要谢谢你。我希望主要坚持我写的代码,因为这段代码相当混乱。如果你不介意的话,我已经更新了我的代码。@Sandlood请检查更新后的代码和输出。希望这会有所帮助。我想你误解了我的initi所有问题。这个程序的目的是取两个数字,看看哪个更接近15。谢谢你,我在执行这个时有点困难,但无论如何还是要谢谢你。我希望主要还是坚持我写的代码,因为这个代码相当混乱。如果你不介意的话,我已经更新了我的代码。@sandlewoodase用输出检查更新后的代码。希望它能有所帮助。我想你误解了我最初的问题。这个程序的目的是取两个数字,看看哪个更接近15。@CandiedOrange我没有。如果数字是负数或大于或等于15,OP声明它应该返回0。验证检查负数或>=15并在这些情况下将参数设置为0。如果两个参数都无效,则返回0。如果只有1个参数无效,则将其设置为0