有没有办法将用户输入存储在数组中并反转它? [复制]

Posted

技术标签:

【中文标题】有没有办法将用户输入存储在数组中并反转它? [复制]【英文标题】:is there a way to store user input in an array and get reverse of it? [duplicate] 【发布时间】:2014-09-07 02:47:55 【问题描述】:

我已经编写了反转用户输入的 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];
      
 


如何使这段代码工作。

【问题讨论】:

"revrse" -> 看看你是怎么调用这个方法的,它是怎么定义的 1.你代码编译吗? 2.您可以使用 StringBuilder 轻松反转字符串。 另外,您的 reverse 方法只是返回字符数组中最后一个字符的序号,它不会反转它。正如@Shail016 提到的,您可以使用new StringBuilder(n).reverse().toString() 对不起,我是初学者,我并不完全理解您的建议,您能否对您的建议进行更深入的解释 如果您只需要检查String 是否为Palindrome,为什么要反转它。只需获取一个变量,将其初始化为say i = 0,然后将第二个变量初始化为say j = let.length - 10 开始循环到< let.length / 2 并比较let[i] with let[j] 【参考方案1】:

首先你使用

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

但是你定义的方法叫做

int reverse(char[] let)

所以您发布的代码中不会调用 reverse 方法。 第二件事你的方法 reverse(char[]) 没有返回反转的字符串,而只是返回一个与原始字符串的最后一个字符相对应的整数。

在你的反向方法中试试这个代码():

    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;
   

【讨论】:

【参考方案2】:

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

另外,您的代码中有以下错误:

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

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

建议:

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

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

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

    return reversed;

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

【讨论】:

以上是关于有没有办法将用户输入存储在数组中并反转它? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python3将输入数据存储到文本文件中并打印数据输出?

JS中字符串和数组的相互转化

JS中实现字符串和数组的相互转化

将数据存储在 .txt 文件中并检索它

我无法将用户输入的所有值存储在数组中。在窗口警报中,仅显示第一个数组值

如何将由空格缩进的用户输入存储到 String 数组中并将数字转换为 int 数组?