嵌套 if 语句没有字符串
Nesting if statements no strings
我正在做一个回文数列。我已经设置好数学,但我无法嵌套只显示一个答案的 if 语句。
我试图从 'else if' 中删除 'if',但 java 无法识别。输出不提供 "Not 5 digits",当我输入 5 个回文数字时,它会发送 True 和 False 的输出,而不仅仅是 true。然而,它非常适合错误的 5 位数字输入。我能得到一些关于如何适当嵌套的帮助吗?我要求的是什么,或者一个很好的解释的例子,以帮助我实现结果,因为我去过很多网站,但大多数都太简单了,缺乏示例比较。
import java.util.Scanner;
public class Palindrome
{
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
System.out.print ("Enter 5-digit integer value: ");
int userNumber = input.nextInt();
System.out.println("Input value: " + "\t" + userNumber);
//User input incorrect amount of digits
if (userNumber >= 100000 && userNumber <= 9999)
{
System.out.println("Not 5 digits.");
}
else if(userNumber < 100000 && userNumber > 9999)
{
int Number5 = (userNumber/10000) % 10;
int Number4 = (userNumber/1000) % 10;
int Number3 = (userNumber /100) % 10;
int Number2 = (userNumber/10) % 10;
int Number1 = userNumber % 10;
//Conditions are met for Palidrome Number
if(Number1 == Number5 && Number2 == Number4)
{
System.out.println("Judgement: " + "\t" + "\t" + "True");
}
//Conditions are not met for Palidrome Number
else if (Number1 != Number5 || Number2 !=Number4);
{
System.out.println("Judgement: " + "\t" + "\t" + "False");
}
}
}
}
结果应显示 true、false 或 5 位数字
这可行:
import java.util.Scanner;
import java.lang.*;
public class Main
{
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
System.out.print ("Enter 5-digit integer value: ");
String userNumber = input.next();
System.out.println("Input value: " + "\t" + userNumber);
//User input incorrect amount of digits
if (userNumber.length()!=5)
{
System.out.println("Not 5 digits.");
}
else{
//Conditions are met for Palidrome Number
if(new StringBuilder(userNumber).reverse().toString().equals(userNumber))
{
System.out.println("Judgement: " + "\t" + "\t" + "True");
}
//Conditions are not met for Palidrome Number
else
{
System.out.println("Judgement: " + "\t" + "\t" + "False");
}
}
}
}
您的第二个 else if
语句是多余的,并且您在最后一个 if 语句中多了一个分号。
没有数字是>= 100000
和<= 9999
,这就是为什么你永远不会看到不是5位数字。
您必须将该条件更改为:
if (userNumber <= 9999 || userNumber > 99999)
并更改:
else if(userNumber < 100000 && userNumber > 9999)
简单
else
因为如果代码到达 else
部分,那么 userNumber < 100000 && userNumber > 9999
总是 true
。
同样适用于
else if (Number1 != Number5 || Number2 !=Number4);
(注意:最后的 ;
是错误的并且是严重头痛的根源)
必须更改为:
else
这条语句:
int Number3 = (userNumber / 100) % 10;
是多余的,因为 Number3
的值在这种情况下没有用。
所以你的代码应该像这样简化:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print ("Enter 5-digit integer value: ");
int userNumber = input.nextInt();
System.out.println("Input value: " + "\t" + userNumber);
if (userNumber <= 9999 || userNumber > 99999) {
System.out.println("Not 5 digits.");
}
else {
int Number5 = (userNumber / 10000) % 10;
int Number4 = (userNumber / 1000) % 10;
int Number2 = (userNumber / 10) % 10;
int Number1 = userNumber % 10;
if (Number1 == Number5 && Number2 == Number4) {
System.out.println("Judgement: " + "\t" + "\t" + "True");
} else {
System.out.println("Judgement: " + "\t" + "\t" + "False");
}
}
}
我正在做一个回文数列。我已经设置好数学,但我无法嵌套只显示一个答案的 if 语句。
我试图从 'else if' 中删除 'if',但 java 无法识别。输出不提供 "Not 5 digits",当我输入 5 个回文数字时,它会发送 True 和 False 的输出,而不仅仅是 true。然而,它非常适合错误的 5 位数字输入。我能得到一些关于如何适当嵌套的帮助吗?我要求的是什么,或者一个很好的解释的例子,以帮助我实现结果,因为我去过很多网站,但大多数都太简单了,缺乏示例比较。
import java.util.Scanner;
public class Palindrome
{
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
System.out.print ("Enter 5-digit integer value: ");
int userNumber = input.nextInt();
System.out.println("Input value: " + "\t" + userNumber);
//User input incorrect amount of digits
if (userNumber >= 100000 && userNumber <= 9999)
{
System.out.println("Not 5 digits.");
}
else if(userNumber < 100000 && userNumber > 9999)
{
int Number5 = (userNumber/10000) % 10;
int Number4 = (userNumber/1000) % 10;
int Number3 = (userNumber /100) % 10;
int Number2 = (userNumber/10) % 10;
int Number1 = userNumber % 10;
//Conditions are met for Palidrome Number
if(Number1 == Number5 && Number2 == Number4)
{
System.out.println("Judgement: " + "\t" + "\t" + "True");
}
//Conditions are not met for Palidrome Number
else if (Number1 != Number5 || Number2 !=Number4);
{
System.out.println("Judgement: " + "\t" + "\t" + "False");
}
}
}
}
结果应显示 true、false 或 5 位数字
这可行:
import java.util.Scanner;
import java.lang.*;
public class Main
{
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
System.out.print ("Enter 5-digit integer value: ");
String userNumber = input.next();
System.out.println("Input value: " + "\t" + userNumber);
//User input incorrect amount of digits
if (userNumber.length()!=5)
{
System.out.println("Not 5 digits.");
}
else{
//Conditions are met for Palidrome Number
if(new StringBuilder(userNumber).reverse().toString().equals(userNumber))
{
System.out.println("Judgement: " + "\t" + "\t" + "True");
}
//Conditions are not met for Palidrome Number
else
{
System.out.println("Judgement: " + "\t" + "\t" + "False");
}
}
}
}
您的第二个 else if
语句是多余的,并且您在最后一个 if 语句中多了一个分号。
没有数字是>= 100000
和<= 9999
,这就是为什么你永远不会看到不是5位数字。
您必须将该条件更改为:
if (userNumber <= 9999 || userNumber > 99999)
并更改:
else if(userNumber < 100000 && userNumber > 9999)
简单
else
因为如果代码到达 else
部分,那么 userNumber < 100000 && userNumber > 9999
总是 true
。
同样适用于
else if (Number1 != Number5 || Number2 !=Number4);
(注意:最后的 ;
是错误的并且是严重头痛的根源)
必须更改为:
else
这条语句:
int Number3 = (userNumber / 100) % 10;
是多余的,因为 Number3
的值在这种情况下没有用。
所以你的代码应该像这样简化:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print ("Enter 5-digit integer value: ");
int userNumber = input.nextInt();
System.out.println("Input value: " + "\t" + userNumber);
if (userNumber <= 9999 || userNumber > 99999) {
System.out.println("Not 5 digits.");
}
else {
int Number5 = (userNumber / 10000) % 10;
int Number4 = (userNumber / 1000) % 10;
int Number2 = (userNumber / 10) % 10;
int Number1 = userNumber % 10;
if (Number1 == Number5 && Number2 == Number4) {
System.out.println("Judgement: " + "\t" + "\t" + "True");
} else {
System.out.println("Judgement: " + "\t" + "\t" + "False");
}
}
}