【问题标题】:A while loop with an if statement and a for loop in it [duplicate]带有if语句和for循环的while循环[重复]
【发布时间】:2015-01-27 21:54:09
【问题描述】:

我正在尝试创建一个小程序,让我可以用一个单词读取程序。如果单词有 6 个字母,则向后显示单词。 如果没有,告诉用户这个词有多少个字母。这样做直到用户输入“日本”。

示例输出为:

输入一个单词>国际象棋

国际象棋有5个字母

输入一个单词> google

魔法六! ELGOOG

输入一个单词>日本

再见!

if 语句和 for 循环由于某种原因被绕过,我不知道为什么。我目前的代码是这样的:

import java.util.*; //imports the utilities
public class WordPyramid {
    public static void main(String[] args) {
        String n;
        Scanner kb = new Scanner(System.in);
        System.out.println("Enter a word: "); 

        while ((n = kb.nextLine().toLowerCase()) == "japan" ) {
            int y = n.length();
            {
                if (y == 6) {
                    String reverse = "";

                    for (int i = y - 1; i >= 0; i--) {
                        reverse = reverse + n.charAt(i);
                        System.out.println(reverse);
                    }
                }
                else {
                    System.out.println(n + " has " + y + 1 + " letters ");
                }
            }
        }
    }
}

【问题讨论】:

  • 好的,现在您对这段代码的具体问题是什么?
  • 然后呢?你的问题是什么?顺便说一句:您应该重新检查如何在 Java 中比较字符串。
  • if 语句和 for 循环由于某种原因被绕过,我不确定为什么
  • 顺便说一句,reverse a string on Java
  • Luiggi 和 Tom,我的代码没有做它需要做的事情,我不知道为什么,下面的修复都没有奏效,因此我需要帮助。请帮忙

标签: java loops if-statement for-loop while-loop


【解决方案1】:

使用: kb.next() 而不是 kb.nextLine()

此外,要与 String 对象进行比较,您必须使用 equals(),例如:
while ((n = kb.nextLine().toLowerCase()).equals("japan")) {

【讨论】:

  • Scanner#nextLine 没有错。它读取整行而不是简单的 word
  • @LuiggiMendoza 告诉了原因
  • 我已经说过了:它读取整行而不是读取一个简单的 word 例如如果您的输入是hello world,那么Scanner#nextLine 将返回"hello world",而Scanner#next 将仅返回"hello"。此外,Scanner#next 不会消耗通过在输入流中按 Enter 键输入的字符。
  • 另外,while 循环中的条件应该是不等于。
  • 程序还是没有输出正确的输出
猜你喜欢
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 2016-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多