当前位置: 首页 > 知识库问答 >
问题:

java将字符串转换为int并删除尾随的零

祝宏放
2023-03-14

大家好,我目前正试图将字符串转换为反过来的数组列表,然后删除任何尾随的零,例如001203转换为(3,0.2,1,0,0),然后(3,0,2,1)

我的代码现在是

public convert(String nums) {
    List = new ArrayList<Integer>();  // create arraylist

    for (int i = nums.length(); i >= 0; i--) { //convert to int
        int j = Integer.parseInt(digits);
        List .add(j);

        for (Iterator<Integer> k = List .iterator(); k.hasNext();) {  //remove trailing zeros
            if (k.next().equals(0)) {
                k.remove();
            }
        }

    }

此代码目前删除所有的0,而不是尾随的零。这意味着我的输出是(3,2,1)而不是(3,0,2,1);

如有任何帮助,我们将不胜感激

共有3个答案

邵凯定
2023-03-14

这里有一个快速的例子,说明你想在短期内做什么:

String example =  "001203";
// Replacing all leading 0s with empty, converting to char array
char[] chars = example.replaceAll("^0+", "").toCharArray();
// creating list of integers
List<Integer> list = new ArrayList<Integer>();
// iterating chars
for (char c: chars) {
    // trying to convert to integer
    try {
        list.add(Integer.parseInt(Character.toString(c)));
    }
    catch (NumberFormatException nfe) {
        // TODO handle non-numeric characters!
    }
}
// reversing list
Collections.reverse(list);
// printing list
System.out.println(list);

输出

[3, 0, 2, 1]

注意事项

另一个不使用Collections.reverse的选项是在char[]的末尾开始迭代:

for (int i = chars.length - 1; i > -1; i--) {
    try {
        list.add(Integer.parseInt(Character.toString(chars[i])));
...
卫琛
2023-03-14

请尝试以下代码:

public static void main(String[] args) {
     String numStr = "001203";
     String revNumStr = new StringBuilder(numStr).reverse().toString();

     int lastZeroIndex = revNumStr.lastIndexOf('0');
     if(lastZeroIndex == revNumStr.length() - 1) {
         String newStr = "";
         boolean done = false;
         for(int i = (revNumStr.length() - 1) ; i >= 0 ; i --) {

             if(revNumStr.charAt(i) != '0') {
                done = true; 
             }

             if(done) {
                 newStr += revNumStr.charAt(i);
             }
         }

         revNumStr = new StringBuilder(newStr).reverse().toString();
     }

     System.out.println("The revrese string is : " + revNumStr);
}
从建明
2023-03-14

方法的问题在于,在内部循环中,无论零在列表中的位置如何,都会删除零。

实现你想要的有多种方法。这里有一个使用单个循环的方法(没有为您反转列表的字符串或集合操作):

    String nums = "001203";

    List<Integer> list = new ArrayList<>();

    // a boolean flag to help check for leading zeroes
    // set it to true first i.e. assume there are leading zeroes
    boolean checkLeadingZeroes = true;

    // Ignore leading zeroes during iteration,
    // and append to list in reverse order

    for (int i=0; i < nums.length(); i++){
        int n = Integer.parseInt(nums.charAt(i)+"");

        // only check for leading zeroes if flag is true

        if (checkLeadingZeroes){
            // If flag is set to false here, you've found the first non-zero

            checkLeadingZeroes = (n == 0);
        }

        if (!checkLeadingZeroes) {
            /* If flag is false, n is not a leading zero
             * Add n to the beginning of your list (index 0)
             */
            list.add(0, n);
        }
    }

还有几个其他选择:

>

  • 更改内部循环,以便在列表中向后迭代,并删除零,直到找到非零值

    首先修剪所有前导零(例如使用正则表达式操作或循环),然后向后循环以创建列表。

    希望有帮助。

  •  类似资料:
    • 注意:这个问题包含不建议使用的前1.0代码!不过,答案是正确的。 要在Rust中将转换为,我可以执行以下操作: 我知道如何将转换为的唯一方法是获取其中的一个片段,然后像这样使用: 有没有办法直接将转换为?

    • 我只是无法在c中转换不同的数据类型,我知道c是一种强类型语言,所以我在这里使用了,但我面临一个问题,错误消息是 从“std::string{aka std::basic_string}类型转换为“int”类型的static_

    • 如何将转换为Java中的? 我的字符串只包含数字,我想返回它所代表的数字。 例如,给定字符串时,结果应该是数字。

    • 本文向大家介绍Perl删除尾随的换行符,包括了Perl删除尾随的换行符的使用技巧和注意事项,需要的朋友参考一下 示例 该函数chomp将从传递给它的每个标量中删除一个换行符(如果存在)。chomp将使原始字符串变异,并返回删除的字符数 您也可以chomp一次输入多个字符串: 但是通常,没有人担心删除了多少换行符,因此chomp通常在空上下文中看到,并且通常是由于从文件中读取了行:        

    • 问题内容: 我有一个字符串,我想仅使用Java从字符串的结尾删除行尾字符 我想成为 (此问题类似于但与问题593671不同) 问题答案: 您可以使用。这修剪和字符在字符串的结尾 正则表达式的解释如下: 是包含和的字符类 是一个或多个重复 是弦末锚 参考文献 regular-expressions.info/Anchors,角色类,重复 相关话题 您还可以使用修剪字符串 开头 和 结尾 的 所有 空

    • 问题内容: 使用Swift,我试图获取应用程序文本视图中输入的数字列表,并通过为成绩计算器提取每个数字来创建此列表的总和。而且,用户输入的值量每次都会更改。一个例子如下所示: 字符串:98,99,97,96 …试图获取:98 + 99 + 97 + 96 … 请帮忙!谢谢 问题答案: 使用打破了逗号分隔的字符串。 使用前,每一个元素后删除空格 使用每个元素转换为整数。 使用(以前称为)删除所有无法