-3

我正在尝试将第一个单词移到 Java 中的最后一个位置。但是我的程序没有打印出这句话。我会错过什么?

这是我的程序:

import java.util.Scanner;

public class FirstLast {

    public static void main(String[] args) {
        System.out.println("Enter line of text.");
        Scanner kb = new Scanner(System.in);
        String s = kb.next();
        int last = s.indexOf("");
        System.out.println(s);
        s = s.sub string(0, last) ";
        System.out.println("I have rephrased that line to read:");
        System.out.println(s);
    }
}
4

4 回答 4

1

你可以尝试这样的事情:

public static void main(String[] args) {
    System.out.println("Enter line of text.");
    Scanner kb = new Scanner(System.in);
    String s = kb.nextLine(); // Read the whole line instead of word by word
    String[] words = s.split("\\s+"); // Split on any whitespace
    if (words.length > 1) { 
        //             v   remove the first word and following whitespaces 
        s = s.substring(s.indexOf(words[1], words[0].length())) + " " + words[0].toLowerCase();
        //                                                              ^   Add the first word to the end
        s = s.substring(0, 1).toUpperCase() + s.substring(1);

    }

    System.out.println("I have rephrased that line to read:");
    System.out.println(s);
}

如果您不关心保留空格,则可以更简单地进行吐痰

输出:

Enter line of text.
A aa  aaa    aaaa
I have rephrased that line to read:
Aa  aaa    aaaa a

有关更多信息,请阅读http://docs.oracle.com/javase/tutorial/java/data/strings.htmlhttp://docs.oracle.com/javase/7/docs/api/java/lang/String。 html

于 2013-03-04T07:23:20.163 回答
1
    int last = s.indexOf(""); // Empty string, found at 0

应该

    int last = s.lastIndexOf(' '); // Char possible too
于 2013-03-04T07:09:55.073 回答
0

假设您的输入是空格分隔的字符串,那么您可以像这样交换第一个和最后一个位置。

String[] words = s.split(" ");
String tmp = words[0];  // grab the first
words[0] = words[words.length];  //replace the first with the last
words[words.length] = tmp;  // replace the last with the first
于 2013-03-04T07:11:18.003 回答
0

请阅读扫描仪 API 文档:

Scanner 使用分隔符模式将其输入分解为标记,默认情况下匹配空格。

也就是说,使用 kb.next() 只能得到第一个单词。要修复它,您应该在 while 循环中获取所有单词或使用行尾作为分隔符。

扫描仪 API

于 2013-03-04T07:14:18.377 回答