只有Java中的第一个单词

时间:2011-11-02 20:11:27

标签: java string char if-statement

我是一个编写Java代码的新手。我还没有读过关于循环的内容。我只是在if-else语句中。我的代码工作,除非我输入一个句子,只有第一个单词被识别。如果我输入一个没有空格的句子,那就完美了。如何获取代码才能看到整个句子?谢谢!

import java.util.Scanner;

public class Program04
{
    public static void main(String[] args)
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Write a complete sentence with proper grammer:");
        String sentence = keyboard.next();
        boolean qMark = sentence.contains("?");
        boolean wow = sentence.contains("!");
        if (qMark)
            System.out.println("Yes");
        else if (wow)
            System.out.println("Wow");
        else
            System.out.println("You always say that.");
    }
}

4 个答案:

答案 0 :(得分:3)

使用

keyboard.nextLine();

而不是

keyboard.next();

答案 1 :(得分:2)

查看API,特别是关于nextLine()的部分。

答案 2 :(得分:0)

Scanner.next()仅返回下一个标记,默认情况下,该标记只是一个单词(以空格分隔)。如果你想要整个句子你可以将分隔符更改为'\ n':keyboard.setDelimiter("\n");,或者你可以学习循环然后遍历整个句子。

编辑: 或者,正如其他人所指出的那样,nextLine()。这更便携,因为mac使用'\ r',我不会理解我所说的。

答案 3 :(得分:0)

import java.util.Scanner;

public class Program04{

    public static void main(String[] args){

        Scanner keyboard = new Scanner(System.in);
        System.out.println("Write a complete sentence with proper grammer:");
        String sentence = keyboard.nextline(); 
        
        *//this graps full text but next ignores the other words after a space is given*
        boolean qMark = sentence.contains("?");
        boolean wow = sentence.contains("!");

        if (qMark)
            System.out.println("Yes");
        else if (wow)
            System.out.println("Wow");
        else
            System.out.println("You always say that.");
    }
}