Java 输出垃圾?
Java outputs garbage?
import java.io.BufferedReader;
import java.io.CharArrayReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
PrintWriter output = new PrintWriter(System.out);
String st="";
String st1;
String st2;
while((st1 = input.readLine()) != null)
{
char[] x1 = st1.toCharArray();
st2 = input.readLine();
char[] x2 = st2.toCharArray();
Arrays.sort(x1);
Arrays.sort(x2);
st1 = x1.toString();
st2 = x2.toString();
output.print(st1.charAt(0));
output.flush();
}
}
}
输入可以是任意两个字符串。
问题是这段代码输出垃圾值,那么,这有什么问题呢?
注:此为部分代码调试,其余代码未附上。
x1.toString()
在 x1
数组上调用 toString()
方法。
其中 returns 类似于 [C@33909752
。这是 Object.toString()
方法返回的值。
[ - it's an array
C - of type `char`
33909752 - on memory address `33909752`
如果你想根据数组 x1
中的字符构建一个 String
你必须使用 new String(x1)
.
import java.io.BufferedReader;
import java.io.CharArrayReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
PrintWriter output = new PrintWriter(System.out);
String st="";
String st1;
String st2;
while((st1 = input.readLine()) != null)
{
char[] x1 = st1.toCharArray();
st2 = input.readLine();
char[] x2 = st2.toCharArray();
Arrays.sort(x1);
Arrays.sort(x2);
st1 = x1.toString();
st2 = x2.toString();
output.print(st1.charAt(0));
output.flush();
}
}
}
输入可以是任意两个字符串。 问题是这段代码输出垃圾值,那么,这有什么问题呢? 注:此为部分代码调试,其余代码未附上。
x1.toString()
在 x1
数组上调用 toString()
方法。
其中 returns 类似于 [C@33909752
。这是 Object.toString()
方法返回的值。
[ - it's an array
C - of type `char`
33909752 - on memory address `33909752`
如果你想根据数组 x1
中的字符构建一个 String
你必须使用 new String(x1)
.