从字符串中删除负号

时间:2019-09-18 03:22:07

标签: java

我必须反转用户输入的字符串,并且当用户输入负数时,我试图删除负号,但是我不确定该如何处理。

我尝试使用string.replace(),但是当用户输入“ -9”时我不打印例如“ 9”,而是返回“ 99-9”

import java.util.Scanner;

public class Reverse {

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

    System.out.println("Type a number: ");
    String num = scnr.nextLine();
    String reverse = "";

    for (int i = num.length() - 1; i >= 0; i--) {
        reverse = reverse + num.charAt(i);


    }

    System.out.println("Reverse is: " + reverse);

}

}

3 个答案:

答案 0 :(得分:2)

直接的解决方案:在循环中放置一个if块!

您现在正在无条件添加字符。例如,您可以仅追加数字字符。然后,其他任何内容(例如“-”)都不会显示在您的输出中!

答案 1 :(得分:2)

您可以尝试这样的事情。

public class App {

    public static void main(String[] args) {
        String input = "78-889-969-*)(963====";
        StringBuilder builder = new StringBuilder();
        for (int i = input.length() - 1; i >= 0; i--) {
            if (input.charAt(i) >= 48 && input.charAt(i) <= 57) {
                builder.append(input.charAt(i));
            }
        }
        System.out.println("builder = " + builder.toString());
    }
}

使用Character.isDigit()

public class App {

    public static void main(String[] args) {
        String input = "78-889-969-*)(963====";
        StringBuilder builder = new StringBuilder();
        for (int i = input.length() - 1; i >= 0; i--) {
            if (Character.isDigit(input.charAt(i))) {
                builder.append(input.charAt(i));
            }
        }
        System.out.println("builder = " + builder.toString());
    }
}

答案 2 :(得分:1)

用以下内容替换for循环。

for (int i = num.length() - 1; i >= 0; i--) 

{

    if(num.charAt(i) == 45){
        break;
    }

    reverse = reverse + num.charAt(i);
}`

45是-符号的ASCII值。 if(num.charAt(i) == 45)检查是否存在-符号,如果存在,它将在打印-符号之前中断循环。 注意-循环直到达到i = 0才会中断。