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