在java中不使用内置libs将字符串转换为字符的方法

在java中不使用内置libs将字符串转换为字符的方法,java,string,char,Java,String,Char,有没有一种方法可以在不使用任何库函数的情况下将字符串转换为字符数组,例如:-split、tocharArray等 String str = "abcd"; char[] arr = str.toCharArray(); // What is the wrong with this way 您可以手动构造一个字符数组 String str = "abcd"; char[] arr = new char[str.length()]; for (int i =

有没有一种方法可以在不使用任何库函数的情况下将字符串转换为字符数组,例如:-split、tocharArray等

String str = "abcd";
char[] arr = str.toCharArray(); // What is the wrong with this way
您可以手动构造一个字符数组

String str = "abcd";
char[] arr = new char[str.length()];
for (int i = 0; i < str.length(); i++) {
    arr[i] = str.charAt(i);
}
一点办法,

public Character[] toCharacterArray(String s) {
   if (s == null) {
     return null;
   }
   Character[] array = new Characer[s.length()];
   for (int i = 0; i < s.length(); i++) {
      array[i] = new Character(s.charAt(i));
   }

   return array;
}

这可以通过使用java.io.StringReader实现

以下是一个小片段:

public static void main(String[] args)
{
    try
    {
        String s = "hello world";

        StringReader reader = new StringReader(s);

        char[] cc = new char[1];
        cc[0] = (char) reader.read();

        char[] tmpCC = null;

        int readChar = 0;
        int lenConcatenator = cc.length;
        while((readChar = reader.read())!=-1)
        {
            ++lenConcatenator;
            tmpCC = new char[cc.length];
            System.arraycopy(cc, 0, tmpCC, 0, cc.length);

            cc = new char[lenConcatenator];
            System.arraycopy(tmpCC, 0, cc, 0, tmpCC.length);

            cc[lenConcatenator - 1] = (char) readChar;
        }

        System.out.println(cc);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}
用于字符串库的数组。这个库可以被它在java.lang.String类中的实际实现所取代。 没有这一点,如果我们能实现,请建议

import java.util.Scanner;

public class ReverseStringWOInbuilt {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[] ch = sc.nextLine().toCharArray();
        char temp;  
        for (int i = 0, j = ch.length-1; i < j; i++, j--) {
            temp = ch[i];
            ch[i] = ch[j];
            ch[j] = temp;
        }
        System.out.println(new String(ch));
    }
}

既然有现成的API,为什么您更喜欢手工操作?定义库函数。如果不使用字符串的方法,就无法访问字符串的内容,这些方法都是Java库的一部分。重新发明轮子?是的,有很多方法可以做到这一点。。。但是:为什么?家庭作业-在这种情况下,在字符串上运行一个循环,手动将所有字符读入char[]。使用String.charAtint从字符串中获取sinlge字符。charAt是一个库函数,对吗?。它是这样做的:返回值[索引+偏移];他说,在这种情况下,您甚至不能使用String.length,因为它是库函数。您希望执行低级操作来获取char[]吗?我只是说,如果String.length可以,那么tocharray也应该是:pThanks@Keyser。如果s[i]起作用,那么将它转换为另一个数组需要什么:O。因为s本身就是一个数组。你能为这个代码添加一些解释吗?答案是肯定的,Java有一个用于从字符串读取字符流的StringReader类。如果没有读取任何字符,它的read方法将返回-1,所以我用它来检查它是否是字符串的结尾。我已经将该字符一个接一个地存储在一个char数组中,在读取整个字符串后,我返回了该数组。
public static char[] toMyArray(String s) {
    StringReader reader = new StringReader(s);
    int k = 0;
    int i = 0;
    char[] output = new char[s.length()];
    try {
        while ((k = reader.read()) != -1) {
            output[i] = ((char) k);
            i++;
        }
    } catch (Exception e) {

    }
    return output;
}