从当前字母中查找字母表中的第 n 个字母
Finding nth letter in alphabet from current letter
所以我试图从用户输入的字母表中取出一个字母,然后找到10个字母之外的字母[=21] =],如果字母是 'z' 或 'y' 或任何 < 字母 16.
,我希望它环绕字母表
我正在努力处理循环部分。我知道字母表只是被放入 ASCII table
中,数字不是 1-26,所以我不确定如何处理它。这是我目前所拥有的。
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("Please input your favorite letter");
char userLetter = input.next().charAt(0);
char newLetter = (char) ((userLetter + 10) % 26);
System.out.println("10 letters beyond your letter is " + newChar);
}
有人能帮忙吗?
我们可以尝试将小写字母和大写字母字符映射到 1-26 的比例,然后使用模数移位并可能换行。最后,我们跟踪移位量,以便我们可以将其加回去以生成移位后的字符。
Scanner input = new Scanner(System.in);
System.out.println("Please input your favorite letter");
char userLetter = input.next().charAt(0);
// get the ASCII value of the input character
int ascii = (int) userLetter;
// compute the shift (97 for lowercase, 65 for uppercase)
int shift = ascii > 90 ? 97 : 65;
int newPosition = (ascii - shift + 10) % 26;
newPosition += shift;
char newChar = (char) newPosition;
System.out.println("10 letters beyond your letter is " + newChar);
相反,您可以只使用 valueOf 组合。
String userLetter = ...;
int charValue = userLetter.charAt(0);
String next = String.valueOf((char)(charValue + 10));
然后只是一个 if 语句来检测它何时到达 A 或 Z 并相应地更改它。
希望对您有所帮助。
它叫做凯撒密码
s 是你的班次数
//A Java Program to illustrate Caesar Cipher Technique
public class CaesarCipher
{
// Encrypts text using a shift od s
public static StringBuffer encrypt(String text, int s)
{
StringBuffer result= new StringBuffer();
for (int i=0; i<text.length(); i++)
{
if (Character.isUpperCase(text.charAt(i)))
{
char ch = (char)(((int)text.charAt(i) +
s - 65) % 26 + 65);
result.append(ch);
}
else
{
char ch = (char)(((int)text.charAt(i) +
s - 97) % 26 + 97);
result.append(ch);
}
}
return result;
}
// Driver code
public static void main(String[] args)
{
String text = "ATTACKATONCE";
int s = 10;
System.out.println("Text : " + text);
System.out.println("Shift : " + s);
System.out.println("Cipher: " + encrypt(text, s));
}
}
试试这个:
public static void main(String[] args) {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please input your favorite letter");
char userLetter = input.next().charAt(0);
int unumber = (int) userLetter;
int newNum=unumber+10;
if(newNum>122 || newNum>90){
newNum=(unumber)-(26-10);
}
char newLetter = (char) (newNum);
System.out.println("10 letters beyond your letter is " + newLetter);
}
所以我试图从用户输入的字母表中取出一个字母,然后找到10个字母之外的字母[=21] =],如果字母是 'z' 或 'y' 或任何 < 字母 16.
,我希望它环绕字母表我正在努力处理循环部分。我知道字母表只是被放入 ASCII table
中,数字不是 1-26,所以我不确定如何处理它。这是我目前所拥有的。
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("Please input your favorite letter");
char userLetter = input.next().charAt(0);
char newLetter = (char) ((userLetter + 10) % 26);
System.out.println("10 letters beyond your letter is " + newChar);
}
有人能帮忙吗?
我们可以尝试将小写字母和大写字母字符映射到 1-26 的比例,然后使用模数移位并可能换行。最后,我们跟踪移位量,以便我们可以将其加回去以生成移位后的字符。
Scanner input = new Scanner(System.in);
System.out.println("Please input your favorite letter");
char userLetter = input.next().charAt(0);
// get the ASCII value of the input character
int ascii = (int) userLetter;
// compute the shift (97 for lowercase, 65 for uppercase)
int shift = ascii > 90 ? 97 : 65;
int newPosition = (ascii - shift + 10) % 26;
newPosition += shift;
char newChar = (char) newPosition;
System.out.println("10 letters beyond your letter is " + newChar);
相反,您可以只使用 valueOf 组合。
String userLetter = ...;
int charValue = userLetter.charAt(0);
String next = String.valueOf((char)(charValue + 10));
然后只是一个 if 语句来检测它何时到达 A 或 Z 并相应地更改它。
希望对您有所帮助。
它叫做凯撒密码 s 是你的班次数
//A Java Program to illustrate Caesar Cipher Technique
public class CaesarCipher
{
// Encrypts text using a shift od s
public static StringBuffer encrypt(String text, int s)
{
StringBuffer result= new StringBuffer();
for (int i=0; i<text.length(); i++)
{
if (Character.isUpperCase(text.charAt(i)))
{
char ch = (char)(((int)text.charAt(i) +
s - 65) % 26 + 65);
result.append(ch);
}
else
{
char ch = (char)(((int)text.charAt(i) +
s - 97) % 26 + 97);
result.append(ch);
}
}
return result;
}
// Driver code
public static void main(String[] args)
{
String text = "ATTACKATONCE";
int s = 10;
System.out.println("Text : " + text);
System.out.println("Shift : " + s);
System.out.println("Cipher: " + encrypt(text, s));
}
}
试试这个:
public static void main(String[] args) {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please input your favorite letter");
char userLetter = input.next().charAt(0);
int unumber = (int) userLetter;
int newNum=unumber+10;
if(newNum>122 || newNum>90){
newNum=(unumber)-(26-10);
}
char newLetter = (char) (newNum);
System.out.println("10 letters beyond your letter is " + newLetter);
}