如何从字符串中过滤数字的某些值并返回其余的值

时间:2019-05-27 01:51:58

标签: java

我需要创建一个将字符串作为输入的方法,例如“我在37个荒野中有2456个气球”,并且如果n设置为3而“ more”设置为false,则该方法将返回“我有2个气球在旷野”。如果将more设置为true,它将返回“我在7个荒野中有456个气球”

我一直在研究过滤部分,但是我不知道如何将这种方法的其余部分放在一起。到目前为止,这是我想出的:

public class Test1
{
    public static void main(String [] args)
    {
        List<Integer> lst= new ArrayList<Integer>();
        //Take user input any number of times based on your condition.

        System.out.println("Please enter a number :");
        Scanner sc= new Scanner(System.in);
        int i= sc.nextInt();
        if(i==0 || i==1 || i==2 ||i==3)
        {
            lst.add(i);
        }
        //Go back
    }
}

或者我可以使用类似这样的东西:

int input;
do {
    input = sc.nextInt();
} while (input < 0 || input > 3);

我对Java还是很陌生,因此该任务的进度很慢

如何获得此方法来保存字母和过滤器数字,具体取决于两个值(数字和true / false表示更多)?

1 个答案:

答案 0 :(得分:0)

这是一个带有解释的简单解决方案。 请注意,我们使用了非常简单的方法,但是仍然需要进行大量验证。另外,解决方案较短,但这是我写的解决方案,因此对于Java新手来说更清楚。

public static void main(String[] args) {
    Scanner sc= new Scanner(System.in);

    System.out.println("Enter your string: ");
    String strInput = sc.nextLine();

    System.out.println("Enter n: ");
    int n = sc.nextInt();

    System.out.println("Do you want more? (Y/N)");
    char more = sc.next().charAt(0);

    String result = "";

    // Loop through all the characters in the String
    for(char c : strInput.toCharArray()) {

        // Check if the character is a number
        // If not, just append to our result string
        if(!Character.isDigit(c)) {
            result += c;
        } else {
            // Converts character to the number equivalent value
            int numValue = Character.getNumericValue(c);

            // If more is 'Y', we check if it's greater than the number and append
            // else if more is 'N', we check if the value is less than n then append.
            // Otherwise, do nothing.
            if (more == 'Y' && numValue > n) {
                result += c;
            } else if (more == 'N' && numValue < n) {
                result += c;
            }
        }
    }

    System.out.println(result);
}