在Java中移动字符串中的字符

在Java中移动字符串中的字符,java,string,Java,String,简要说明 所以我知道这是一个很容易解决的问题,但出于某种原因,我对它的要求感到困惑,所以我真的更需要一个解释 问题 从用户处读取一个单词并显示字符串,其中字母向右移动两个位置,字母向左移动两个位置。将所有三个字符串保存在单独的变量中,并在程序结束时显示所有三个字符串 import java.util.Scanner; public class StringShiftTwoLeftThenRight { public static void main(String[] args)

简要说明

所以我知道这是一个很容易解决的问题,但出于某种原因,我对它的要求感到困惑,所以我真的更需要一个解释

问题

从用户处读取一个单词并显示字符串,其中字母向右移动两个位置,字母向左移动两个位置。将所有三个字符串保存在单独的变量中,并在程序结束时显示所有三个字符串

import java.util.Scanner;   
public class StringShiftTwoLeftThenRight
{
    public static void main(String[] args)
    {
        String word, rightShift = "", leftShift = "";

        Scanner keyboard = new Scanner(System.in);
            System.out.print("\nEnter a word: ");
            word = keyboard.nextLine();
            rightShift = (word.substring((0),
            (word.length()-2)));

            leftShift = (word.substring((2),(word.length())));

            System.out.println("\nThe String shifted two to right looks like this: " + rightShift);
            System.out.println("\nThe String shifted two to left looks like this: " + leftShift);
            System.out.println("\nThe String as it is looks like: " + word);
    }
}
混乱


我很困惑,因为我真的不明白移动字母会做什么,考虑到这样一个事实,如果所有的字母都在同一个方向上移动相同的距离,那么你应该得到的单词是原来的,不是吗?我想这可能是完全错误的。我也确信我以前做过,但我可以找到它的旧文件,出于某种原因我感到困惑。

移动一组字母可以用我知道的两种方式来解释。让我们看看“abcdef”的示例字符串。这可以左移2以生成字符串“cdefab”。这是字符的环绕。另一个转变将产生“cdef”。这相当于在信息丢失时移动字节。后者是通过删除前两个字符来完成的,所以我猜这不是我们想要的。因此,预期输出为

Original: abcdef
Right Shifted: efabcd
Left Shifted: cdefab
我解决了 问题

从用户处读取一个单词并显示字符串,其中字母向右移动两个位置,字母向左移动两个位置。将所有三个字符串保存在单独的变量中,并在程序结束时显示所有三个字符串

import java.util.Scanner;   
public class StringShiftTwoLeftThenRight
{
    public static void main(String[] args)
    {
        String word, rightShift = "", leftShift = "";

        Scanner keyboard = new Scanner(System.in);
            System.out.print("\nEnter a word: ");
            word = keyboard.nextLine();
            rightShift = (word.substring((0),
            (word.length()-2)));

            leftShift = (word.substring((2),(word.length())));

            System.out.println("\nThe String shifted two to right looks like this: " + rightShift);
            System.out.println("\nThe String shifted two to left looks like this: " + leftShift);
            System.out.println("\nThe String as it is looks like: " + word);
    }
}

他们可能希望您存储原始字符串、左移字符串和右移字符串(参见“保存所有三个字符串”),以便稍后打印它们。我同意这很混乱。问是谁出的问题。@Berger我想问题是,如果你有一个词,把所有字母移到右边。。。你基本上只得到了同一个词,但不知何故,所有的词都更偏右了。转换应该是什么?@Berger我从中得到的是,在轮班后,你把所有的字符串打印在一起。所以我不知道是否会发生一些不同的事情?或者这是有史以来最残酷的诡计问题,我想我会发现所有的问题都是一样的。@khelwood:我以为目的是左移原始字符串,然后右移原始字符串并存储两个版本(+原始字符串),但是,唯一知道的方法是问ASKER。你必须考虑它们都移动了相同的两个距离,这些参数的输出看起来不是这样。@ JB01它们都移动了两个距离。前两个角色必须去某个地方。它们要么消失,要么走向尽头。因为生成相同的字符串不会发生任何变化。是的,这就是为什么我对其他人说,我认为这可能是一个骗人的问题,这应该是结果,从我记忆中我模糊地记得课堂上的情况,但我不知道生成它的代码。@Jb01我不认为这是一个骗人的问题。我认为你对这个问题想得太多了。如果你不确定移位应该做什么,那么请询问老师指定输入的预期输出是什么。你可以对此投反对票,但这正是我的教授想要的。