String类getChars方法报错‘void is not allowed’的解决求助
getChars() Method Hey there! Let's break down why you're seeing that frustrating error and how to fix it quickly.
The Root of the Problem
First, let's clarify what String.getChars() actually does: this method is designed to copy characters from the string into a pre-existing char array you provide—it doesn't return a new array. That's why its return type is void (meaning it doesn't send back any value).
If you tried to write something like return myString.getChars(...), the compiler throws "void is not allowed" because you're trying to return nothing when your method expects to return a char array.
Step-by-Step Solution
Here's how to adjust your code to work correctly:
- Validate input first: Make sure the user-provided index is within the bounds of the string to avoid
IndexOutOfBoundsException. - Create a target char array: Its length should match the number of characters you want to extract from the string.
- Call
getChars()to populate the array: This method modifies your target array in-place. - Return the populated array: Since
getChars()does the work of filling your array, you just return that array instead of trying to return the method call itself.
Example Code
Let's put this into practice with a concrete example that takes a string and a starting index, then returns the char array from that index to the end of the string:
public class CharExtractor { public static char[] getCharsFromString(String input, int startIndex) { // Check if the index is valid if (startIndex < 0 || startIndex >= input.length()) { throw new IllegalArgumentException("Start index is out of bounds!"); } // Calculate how many characters we need to extract int charCount = input.length() - startIndex; // Initialize the target array with the correct length char[] targetArray = new char[charCount]; // Use getChars() to fill the target array // Parameters: start index in string, end index in string, target array, start index in target array input.getChars(startIndex, input.length(), targetArray, 0); // Return the now-filled target array return targetArray; } public static void main(String[] args) { String sampleStr = "Hello, Java Developers!"; int userIndex = 7; // User input example char[] result = getCharsFromString(sampleStr, userIndex); // Convert the array back to a string to print System.out.println(new String(result)); // Outputs "Java Developers!" } }
Quick Note: Alternative for Full String Conversion
If your goal is just to convert the entire string to a char array, you can skip getChars() entirely and use the simpler toCharArray() method:
char[] fullArray = input.toCharArray();
But if you need to extract a specific range of characters (which is where getChars() shines), the above solution is exactly what you need.
内容的提问来源于stack exchange,提问作者Kleine Hansel Buenafe

