我必须反转用户输入的字符串,并且当用户输入负数时,我试图删除负号,但是我不确定该如何处理。
我尝试使用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);
}
}
答案 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才会中断。