Java的反行比单词的字母还多
我试着对一个txt文件做如下操作,1-反转行,使最后一行是第一行,依此类推,2-反转单词,使行中的最后一个单词是第一个,3-反转单词的字母Java的反行比单词的字母还多,java,Java,我试着对一个txt文件做如下操作,1-反转行,使最后一行是第一行,依此类推,2-反转单词,使行中的最后一个单词是第一个,3-反转单词的字母 public static void main(String[] args) throws FileNotFoundException { ArrayList<String> revStr = new ArrayList<String>(); Scanner input = new Scanner(n
public static void main(String[] args) throws FileNotFoundException {
ArrayList<String> revStr = new ArrayList<String>();
Scanner input = new Scanner(new File("mobydick-1.txt"));
while (input.hasNextLine()){
revStr.add(input.nextLine());
}
for(int i = (revStr.size()-1); i >=0 ; i--){
String ar[]=revStr.get(i).split(" ");
for(int j = (ar.length-1); j >=0; j--){
stringReverse(ar[j]);
System.out.print(ar[j]+ " ");
}
System.out.println(" ");
}
}
private static String stringReverse(String string) {
if (string == null || string.length() == 0) {
return string;
}
return stringReverse(string.substring(1)) + string.charAt(0);
}
输出
.sgnimooL
1 RETPAHC
ellivleM namreH yb
ELAHW EHT RO ;KCID YBOM
您需要做的是反向读取文件,即从文件中的最后一个字符开始读取
尝试使用。或者,如果您不喜欢使用外部API,您可以使用JDK。如果您想继续使用您的算法,最好使用
StringBuilder
,然后对于反转字符串,您可以使用StringBuilder.reverse()
或使用下面的简单函数为您执行任何反转操作
String stringReverse(String string) {
if (string == null || string.length() == 0) {
return string;
}
return stringReverse(string.substring(1)) + string.charAt(0);
}
错误在
for(int j = (ar.length-1); j >=0; j--){
stringReverse(ar[j]);
System.out.print(ar[j]+ " ");
}
一定是
for(int j = (ar.length-1); j >=0; j--){
ar[j]= stringReverse(ar[j]);
System.out.print(ar[j]+ " ");
}
我已经尝试在循环中实现了一个反向方法,但它仍然没有反转字母它根本没有改变结果,我正在尝试在我打印单词之前实现它。噢,谢谢,现在很好,有什么原因你必须在ar[j]上实现吗?为什么我们必须使用ar[j]两次?您应该将方法的返回值赋给一个变量。我在这里用了同样的ar[j]。。您可以使用任何其他字符串变量并打印相同的字符串
for(int j = (ar.length-1); j >=0; j--){
ar[j]= stringReverse(ar[j]);
System.out.print(ar[j]+ " ");
}