Java 如何从整数中删除特定数字?

Java 如何从整数中删除特定数字?,java,arrays,integer,Java,Arrays,Integer,在n整数中,其中n=1237534(例如),我必须删除数字3,以便获得可能的最大值n也可以是负数 我可以得到127534或123754 较大的当然是127534,但我如何才能退回呢 我试过这样的方法: int n=1237534; String newNum=String.valueOf(n); int[]newGuess=newint[newNum.length()]; for(int i=0;i

n
整数中,其中
n=1237534
(例如),我必须删除数字
3
,以便获得可能的最大值
n
也可以是负数

我可以得到
127534
123754

较大的当然是
127534
,但我如何才能退回呢

我试过这样的方法:

int n=1237534;
String newNum=String.valueOf(n);
int[]newGuess=newint[newNum.length()];
for(int i=0;i
我得到了
12754
,这不是正确的答案。有人可能知道如何解决这个问题吗?

这个怎么样:

int n=123454321;
int bad_数字=3;
StringBuilder s=新的StringBuilder(n+“”);
s、 反向();
System.out.println(“反向字符串:+s”);
对于(int i=0;i

基本上,我们需要删除要删除的数字的最后一次出现(
bad_digit
)。所以我们把数字转换成一个字符串,然后把它倒过来。现在我们需要删除第一个出现的数字。所以我们迭代这些字符,当我们找到那个数字时,我们从字符串中删除它,然后退出循环。现在我们再次反转字符串,输出就是您想要的。

这不需要数组或循环:

int n = 1237534;

String newNum = String.valueOf(n);
char c = '3';
StringBuilder sb1 = new StringBuilder( newNum );
StringBuilder sb2 = new StringBuilder( newNum );

int newGuess1 = Integer.parseInt(sb1.deleteCharAt(newNum.indexOf(c)).toString());
int newGuess2 = Integer.parseInt(sb2.deleteCharAt(newNum.indexOf(c, newNum.indexOf(c)+1)).toString());

System.out.println( newGuess1 > newGuess2 ? newGuess1: newGuess2 );

这里有另一种方法,也可以检查以确保数字实际上包含数字。否则,如果索引返回-1,则可能引发异常

该方法只是根据数字是否为负数删除第一个或最后一个数字

int n = 1234321;
int bad_digit = 3;
StringBuilder sb = new StringBuilder(Integer.toString(n));
String bad = Integer.toString(bad_digit);
int idxOfFirst = sb.indexOf(bad);

// first, make certain the number contains the digit.
if (idxOfFirst >= 0) {
    if (sb.charAt(0) == '-') {
        // if negative, delete last character to give the larger value
        sb.deleteCharAt(sb.lastIndexOf(bad));
    } else {
        // else delete the first character to give the larger value
        sb.deleteCharAt(idxOfFirst);
    }
}
System.out.println(sb);
这会打印字符串而不是转换为整数,因为打印整数会导致转换为字符串。如果数字未出现在原始编号中,则打印原始编号。您可以更改该处理以满足您的要求。

charAt()
将返回第一次出现的3。可以使用子字符串将其删除<代码>字符串结果=str.substring(0,索引)+str.substring(索引+1)不需要循环。我甚至不知道他们在做什么。