有没有办法将用户输入存储在数组中并反过来?

时间:2014-07-16 14:12:27

标签: java arrays

我已经写了java函数反转用户输入,但它不工作,我不知道问题在哪里以及如何解决它。

import java.util.Scanner;

class Reverse{
public static void main(String args[]){
    Scanner word = new Scanner(System.in);
    System.out.print("type the word here to check if it is palindrome: ");
    String n = word.nextLine();
    char[] let = n.toCharArray();
    System.out.print(revrse(i, let));
    // for (int i=let.length-1; i>=0; --i){
        // System.out.print(let[i]);
    // }

 }
 public static int reverse(char[] let){
    for (int i=let.length-1; i>=0; --i){
        return let[i];
    }  
 }

}

如何使此代码正常工作。

2 个答案:

答案 0 :(得分:3)

首先你使用

 System.out.print(revrse(i, let));

但是您定义了名为

的方法
int reverse(char[] let)

所以在你发布的代码中没有调用reverse方法。 你的方法反向(char [])的第二件事是没有返回反转的String但只返回一个对应于原始String的最后一个字符的整数。

在您的反向方法()中尝试此代码:

    String str = "This is a try";
    char[] arr = str.toCharArray();
    char[] temp = new char[arr.length];

    for (int i = 0; i < arr.length; i++) {
        temp[i] = arr[arr.length - 1 - i];
    }

修改

你应该尝试:

class Reverse{
   public static void main(String args[]){
   Scanner word = new Scanner(System.in);
   System.out.print("type the word here to check if it is palindrome: ");
   String n = word.nextLine();
   char[] let = n.toCharArray();
   System.out.print(reverse(let));
   // for (int i=let.length-1; i>=0; --i){
      // System.out.print(let[i]);
   // }

 }
 public static char[] reverse(char[] let){
   char[] reversed = new char[let.length];
    for (int i = 0; i < let.length; i++) {
        reversed[i] = let[let.length - 1 - i];
    }
  return reversed;
 }  
}

答案 1 :(得分:2)

你的反向(char [] let)返回最后一个字母。您应该将您的字母附加到for循环中的String变量,并在循环之后将其返回。

此外,您的代码中存在以下错误:

System.out.print(revrse(i, let));

方法参数和方法名称不匹配。

建议:

可能最好的方法是将输入字符串传递给

public static Stringreverse(String input) {
    String reversed = new String("");

    // do reversing in for loop here
    // ...

    return reversed;
}

方法并处理其内部的反转。这样,你的函数处理给定的任务,你的main()函数保持干净。您可以在主函数中打印它的返回值。