我有一项任务要求我编写一个程序来反转用户输入的正整数的顺序,即1234变为4321。
程序还必须验证输入是否为正整数。这两者都必须以不同的方法完成。
我已经完成了下面的验证部分。我想将用户输入放在一个数组中,但我不知道如何在一个单独的方法中使用验证的数字。任何帮助将不胜感激。
import java.util.Scanner;
public class order {
public static void main(String[] args) {
String userEntry;
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter a positive integer.");
userEntry = keyboard.nextLine();
userEntry = validate (userEntry);
int original = Integer.parseInt(userEntry);
System.out.println("The original number is: "+ original);
}
public static String validate (String userInput) {
int userInputLength = userInput.length();
int counter = 0;
Scanner keyboard = new Scanner(System.in);
while (userInputLength == 0) {
System.out.println("That is not a valid integer. Try again");
userInput = keyboard.nextLine();
userInputLength = userInput.length();
}
while (counter < userInputLength) {
if (Character.isLetter(userInput.charAt(counter))) {
System.out.println("That is not a valid integer. Try again");
userInput = keyboard.nextLine();
userInputLength = userInput.length();
counter = 0;
}
else
{
counter++;
}
while (userInputLength == 0) {
System.out.println("That is not a valid integer. Try again");
userInput = keyboard.nextLine();
userInputLength = userInput.length();
}
}
return userInput;
}
答案 0 :(得分:0)
您可以使用this方法撤消数字:
public int reverseInt(int input)
{
long reversedNum = 0;
long input_long = input;
while (input_long != 0)
{
reversedNum = reversedNum * 10 + input_long % 10;
input_long = input_long / 10;
}
if (reversedNum > Integer.MAX_VALUE || reversedNum < Integer.MIN_VALUE)
{
throw new IllegalArgumentException();
}
return (int)reversedNum;
}
仅供参考,您可以创建一个获取整数值的方法,而不是您现在编写的validate()
方法。如果输入的值成功解析为整数,则返回整数,否则用户将再次获得提示。这将减少许多样板:
public static int getInteger() {
Scanner keyboard = new Scanner(System.in);
while(true){
try {
return Integer.parseInt(keyboard.next());
} catch(NumberFormatException ne) {
System.out.print("That is not a valid integer. Try again");
}
}
}
从主方法调用它:
public static void main(String[] args) {
String userEntry;
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter a positive integer.");
int original = getInteger();
System.out.println("The original number is: "+ original);
System.out.println("The reversed number is: "+ reverse(original));
}
答案 1 :(得分:0)
这是必需的功能:
public static int reverse (int userInpu) {
int lastDigit,res=0;
while (userInpu != 0)
{
lastDigit = userInpu % 10;
if(lastDigit % 2 != 0)
{
res = res * 10 + lastDigit;
}
userInpu = userInpu / 10;
}
return res;
}
答案 2 :(得分:0)
只需遍历字符并通过索引(for
循环)将它们放在数组中。输入字符串中的索引0在数组中的索引为userInputLength - 1 - 0
。第二个的索引为userInputLength - 1 - 1
。第三是userInputLength - 1 - 2
。等
答案 3 :(得分:0)
存储feature_importance_
方法返回的值,然后将其传递给另一种方法,在本例中为validate()
方法。 reverseString()
是包含字符串数字的数组。
在你的主要方法
stringDigits
String validatedString = validate(userInput);
String reversedString = reverseString(validatedString);
int[] stringInDigits = new int[userInput.length()];
stringInDigits = getElementsAsArray(userInput);
变量将包含反转值。
假设您将原始数字作为字符串传递。以相反的顺序循环遍历字符串。
反向字符串方法
reversedString
将数字字符串中的数字存储到数组
声明一个大小等于字符串长度的数组。逐个字符循环字符串并将其放入数组
public String reverseString(String aString){
String reverseString = "" ;
int index = aString.length()-1;
while(index >= 0){
char myCharacter = aString.charAt(index);
reverseString = reverseString.concat(""+myCharacter) ;
index--;
}
return reverseString;
}