【问题标题】:Conditionals and Loops reverseword what am I missing?条件和循环 reverseword 我错过了什么?
【发布时间】:2016-03-26 09:55:09
【问题描述】:

我想像这里Tests 1-4 一样获得所需的输出,并且仍然提示用户使用 Scanner scan = new Scanner(System.in) 输入测试。我的程序说超出范围。我应该如何解决这个问题?

public static void main(String[] args){
    String word="";
    System.out.println("Enter a Word:");
    Scanner scan = new Scanner(System.in);
    word= scan.next();
    for (int j=word.length(); j>=0; j--) {
        System.out.println(word.substring(j-1, j));
    }
}

【问题讨论】:

  • 另外,您可能希望使用System.out.print() 将所有内容保持在同一行。

标签: java java.util.scanner


【解决方案1】:
new StringBuilder(scan.next()).reverse().toString();

【讨论】:

  • 感谢您的帮助。我很感激:)
【解决方案2】:

试试这个:

    for (int j=word.length(); j >=1; j--)
    {
    System.out.println(word.substring(j-1, j));
    }

解释:在你的 for 循环中,j 应该只递减直到 j>=1。什么时候 j = 1 因为你做了 substring(j-1, j) = substring(0, 1)

在你的情况下,当 j 变为 0 时, substring(j-1, j) = substring(-1, 0)

因此例外,因为字符串没有 -1 作为索引。

【讨论】:

  • 感谢您的帮助。我很感激:)
【解决方案3】:

错误是由于循环的最后一次迭代,当j=0 在这种情况下你正在做word.substring(j-1, j)word.substring(-1, 0) 给你那个错误。

改为将循环改为j>=1

String word = "";
System.out.println("Enter a Word:");
Scanner scan = new Scanner(System.in);
word = scan.next();
System.out.println();
for (int j = word.length(); j >= 1; j--) {
 System.out.print(word.substring(j - 1, j));
}

DEMO

【讨论】:

  • 感谢您的帮助。我很感激:)
【解决方案4】:

我看不出每次都创建子字符串的意义。简单的 charAt(index) 就可以了。

Scanner scanner = new Scanner(System.in);
String word = scanner.next();
for (int i = word.length() - 1; i >= 0; i--) {
    System.out.print(word.charAt(i));
}

【讨论】:

  • 感谢您的帮助。我很感激:)
猜你喜欢
  • 1970-01-01
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 2023-01-08
相关资源
最近更新 更多