【问题标题】:System.out.println not working for string [duplicate]System.out.println 不适用于字符串 [重复]
【发布时间】:2015-09-21 07:11:12
【问题描述】:

我正在尝试通过 Hackerrank 学习 Java,而我目前正在处理的挑战需要一个 int、double 和 string,并以相反的顺序将它们打印在不同的行上,但我无法获得要打印的字符串。

import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            int x=sc.nextInt();
            double y=sc.nextDouble();
            String s=sc.nextLine();

            System.out.println("String: "+s);
            System.out.println("Double: "+y);
            System.out.println("Int: "+x);
         }
    }

输入是:

42
3.1415
Welcome to Hackerrank Java tutorials!

输出是:

String:
Double: 3.1415
Int: 42

我根本不懂Java,但是从网上看到的代码,我也说不出为什么会这样。

【问题讨论】:

标签: java string


【解决方案1】:

将代码的第一部分更改为:

        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        double y = sc.nextDouble();
        sc.nextLine();  // Discard rest of current line
        String s = sc.nextLine();

java.util.Scanner 将输入拆分为数字或行的方式有点奇怪。

【讨论】:

  • 有效!为什么只需要字符串而不需要其他字符串?
【解决方案2】:

sc.nextLine(); 应该改为 sc.next();

【讨论】:

  • 没有nextln()next()也没有解决问题。
  • .next() 适用于他们正在尝试做的事情。它将返回作为字符串输入的下一个标记。
  • 如果字符串行包含空格怎么办?
猜你喜欢
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 2016-02-25
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 2011-10-29
相关资源
最近更新 更多