所以我试图取出用户输入的单词的第一个字母并将其添加到单词的末尾(这将是一个密钥),直到消息完成
例如:
密钥 - 字
消息 - 请帮忙
密钥将变为ascii数字除以13,因此w,o,r,d将转换为119,111,114,100然后转换为9,9,9,8
所以,我的问题是如何将我的代码转换为能够将用户的第一个字母输入到密码密钥并将其添加到结尾的内容,直到消息结束。
所以让我们说密码密钥是单词,并且消息是请帮助消息有11个字符所以密码键应该把第一个字母放到后面十次
例如:word,ordw,rdow,dwor,word,ordw等。
import java.util.Scanner;
public class swap {
public static void main(String [] args) {
System.out.println("Enter the word you want to flip");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine(); //get input from user
for (;;) {
char firstLetter = input.charAt(0); //get the first letter
input = input.substring(1); //remove the first letter from the input string
input = input + firstLetter; //add first letter to end of input string
System.out.println("the word you entered flipped is " + input);
break;
}
}
}
答案 0 :(得分:0)
您的要求很奇怪,因为将单词的每个字母的第一个字母发送到单词的末尾会将最初的单词作为最终结果。
如果你想要的只是翻转一个单词,那么你可以使用StringBuilder
并调用reverse
方法:
StringBuilder hello = new StringBuilder("hello");
hello.reverse();
在这个例子中,你好等于 olleh 。如果您不想使用StringBuilder并且需要编写算法,因为它是作业或w / e,那么请看一下这个帖子:
Reverse String Word by Word in Java
编辑:要回答您的评论,请举例说明如何为10个字符执行此操作。
StringBuilder foo = new StringBuilder("somerandom(actuallynotreallyrandom)characters");
for(int i = 0; i < 10; i++)
{
foo.append(foo.charAt(0));
foo.deleteCharAt(0);
}
答案 1 :(得分:0)
如果我对问题的理解是正确的,那么对于word
作为输入和hello world
作为消息,我们会得到一个列表[ordw, rdwo, dwor, word, ordw, rdwo, dwor, word, ordw, rdwo]
作为输出。
String word = "word";
String message = "hello world";
int numShifts = message.length() - 1;
List<String> newWords = new ArrayList<String>();
int wordLength = word.length();
String tempWord = word;
for (int j = 0; j < numShifts ; j++) {
StringBuffer sb = new StringBuffer();
String[] charList = tempWord.split("");
for (int i = 1; i < charList.length; i++) {
sb.append(charList[(i % wordLength) + 1]);
}
tempWord = sb.toString();
newWords.add(tempWord);
}
System.out.println(newWords);