java中字符串到数组的转换问题

t98cgbkg  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(374)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

26天前关门了。
改进这个问题
我正在编写一个函数,它接受一个整数字符串并将其转换为一个数组。然后,在数组中的每个元素上,更改值,将数组转换回字符串,然后返回字符串。此代码给出一个错误。到目前为止,我的情况是:

import java.util.*;

public static void swap(int[] encrypted, int i, int j)
{
 int temp = encrypted[i]; encrypted[i] = encrypted[j]; encrypted[j] =  
 temp;
}

// Input string should only be 4 digits. Ex "1234"
public static String encrypt(String str)
{
 int i;
 int len = str.length(); // get length of string
 int[] encrypted = new int[len]; // size of array

 for (i = 0; i < len; i++)
 {
  // this should be placing integer at string position
  // i, altering its value, and then placing it in 
  // encrypted[i]. This does not work
  encrypted[i] = str.toIntArray(i) + 7 % 10;
 }
 // swaps elements in array
 swap(encrypted, 0, 2);
 swap(encrypted, 1, 3);
 // should convert the array back into a string.
 // Also might not work
 str = String.valueOf(encrypted);

// return new string
 return str;
}

给定输入字符串“1234”,我希望输出为0189。1 + 7 % 10 = 8... 等等。交换索引0和2、1和3。我还不习惯所有的java命令,因为我还在学习。如果有什么我做得不对,请告诉我。

iaqfqrcu

iaqfqrcu1#

而不是

encrypted[i] = str.toIntArray(i) + 7 % 10;

尝试

encrypted[i] = Integer.parseInt(Character.toString(str.charAt(i)))+ 7 % 10;
odopli94

odopli942#

  1. String 没有任何名称为的方法, toIntArray .
    代替
for (i = 0; i < len; i++)
 {
  // this should be placing integer at string position
  // i, altering its value, and then placing it in 
  // encrypted[i]. This does not work
  encrypted[i] = str.toIntArray(i) + 7 % 10;
 }

具有

for (i = 0; i < len; i++) {
    encrypted[i] = Character.getNumericValue(str.charAt(i)) + 7 % 10;
}

2.使用前检查索引,例如使用前 swap(encrypted, 0, 3) ,您应该检查 encrypted.length > 3 .
3.更正将数组转换回字符串的方式。
演示:

import java.util.Arrays;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        // Test
        System.out.println(encrypt("12345678"));
    }

    public static String encrypt(String str) {
        int i;
        int len = str.length();
        int[] encrypted = new int[len];

        for (i = 0; i < len; i++) {
            encrypted[i] = Character.getNumericValue(str.charAt(i)) + 7 % 10;
        }

        if (encrypted.length > 3) {
            swap(encrypted, 0, 3);
        }
        if (encrypted.length > 4) {
            swap(encrypted, 1, 4);
        }

        // Convert the array back into a string.
        str = Arrays.stream(encrypted).boxed().map(String::valueOf).collect(Collectors.joining());

        // Return new string
        return str;
    }

    static void swap(int[] arr, int x, int y) {
        int temp = arr[x];
        arr[x] = arr[y];
        arr[y] = temp;
    }
}

输出:

11121089131415

相关问题