如何使用其他方法的输入?

时间:2017-04-04 06:20:10

标签: java

我有一项任务要求我编写一个程序来反转用户输入的正整数的顺序,即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;   
    }

4 个答案:

答案 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;
   }