Java 将纯文本输入转换为字符,以获得字母的数值,并按5移位?
基本上,我在做一个Caesar密码,我需要在java中将字母改为-6位(因此G变成了etc)。我已经设置了一个扫描仪来捕获文本,但我不知道如何将文本转换为其数值来进行实际移位。我可以只接收输入,然后打印出相同的输出 你能帮我查一下班次的密码吗Java 将纯文本输入转换为字符,以获得字母的数值,并按5移位?,java,Java,基本上,我在做一个Caesar密码,我需要在java中将字母改为-6位(因此G变成了etc)。我已经设置了一个扫描仪来捕获文本,但我不知道如何将文本转换为其数值来进行实际移位。我可以只接收输入,然后打印出相同的输出 你能帮我查一下班次的密码吗 我知道它与char函数有关,但不知道下一步该怎么做。请仔细阅读此代码。代码在解释应用的方法时是自给自足的 import java.util.*; class help { public static void main(String args[])
我知道它与char函数有关,但不知道下一步该怎么做。请仔细阅读此代码。代码在解释应用的方法时是自给自足的
import java.util.*;
class help
{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in); //initializing Scanner class object
String string = sc.nextLine(),string2=""; //use nextLine for reading with spaces.
int i,l;
l = string.length();
for(i=0;i<l;i++)
{
char c = string.charAt(i); // getting character at position i
if(c==' ') // if character is space
{
string2 = string2 + c; //add it to string2
continue; // then move to next iteration for next character
}
int ascii = (int)c; // converting character into its equivalent ascii value.
//Ascii value can be considered as a numerical value for every character.
//Operations on Ascii value will help us get desired changes.
if(Character.isUpperCase(c))
{
int nVal = ascii - 65; // ascii value of A is 65
nVal = (nVal + 20)%26; // going back 6 letters is equivalent to moving 20 letters ahead
nVal = 65 + nVal;
string2 = string2 + (char)nVal;
}
else
{
int nVal = ascii - 97; // ascii value of a is 97
nVal = (nVal + 20)%26;
nVal = 97 + nVal;
string2 = string2 + (char)nVal;
}
}
System.out.println(string2);
}
}
你可以试试这个
public class Cipher {
public static void main(String[] args) {
Scanner scan= new Scanner(System.in);
String x = scan.next();
int shift_position = -6;
String converted = "";
for (char c : x.toCharArray()) {
char newchar = (char) (c + shift_position);
if (Character.isUpperCase(c) && newchar < 65)
newchar = (char) (newchar + 26);
else if (Character.isLowerCase(c) && newchar < 97)
newchar = (char) (newchar + 26);
else if(c==' ') newchar=c;
converted += Character.toString(newchar);
}
System.out.println(converted);
}
}
公共类密码{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
字符串x=scan.next();
int shift_位置=-6;
字符串转换为“”;
for(char c:x.toCharArray()){
char newchar=(char)(c+shift_位置);
if(字符.isUpperCase(c)&&newchar<65)
newchar=(char)(newchar+26);
else if(字符isLowerCase(c)和&newchar<97)
newchar=(char)(newchar+26);
如果(c='')newchar=c,则为else;
转换+=字符.toString(newchar);
}
系统输出打印项次(转换);
}
}
以防您想在JDK 8中尝试
import java.util.Scanner;
public class Test {
public static void main(String[] srg) {
Scanner scan = new Scanner(System.in);
String originalString = scan.nextLine();
String newString =
originalString
.codePoints()
.map(
character -> {
if (character != ' ') return character - 6;
else return character;
})
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
System.out.println(newString);
}
}
可以发布您尝试过的代码吗?解决这个问题的方法通常是将字符串更改为字符数组。一旦你有了这个角色,你就可以把它转换成一个整数,而F应该变成Z?请清除它。@AdarshAnurag是的。@Arunkumarman我还没有尝试过任何东西,只是在网上找到了一些复杂的例子,但每个例子都非常不同!错误:找不到符号扫描器scan=新扫描器(System.in);符号:类扫描程序位置:类帮助添加导入java.util.Scanner;谢谢它不适用于包含空格的句子抱歉,我忘记了空格字符在if-else newchar=c之后添加else块;字符串中有空格时不起作用。@请参见。我希望您不必对空格应用shift。不,空格只是空格。@JSpractice它会起作用的。它将留下空间作为spaces@JSpractice如果你对守则有任何疑问,我会澄清。
Input: zA aZ
Output: tU uT
public class Cipher {
public static void main(String[] args) {
Scanner scan= new Scanner(System.in);
String x = scan.next();
int shift_position = -6;
String converted = "";
for (char c : x.toCharArray()) {
char newchar = (char) (c + shift_position);
if (Character.isUpperCase(c) && newchar < 65)
newchar = (char) (newchar + 26);
else if (Character.isLowerCase(c) && newchar < 97)
newchar = (char) (newchar + 26);
else if(c==' ') newchar=c;
converted += Character.toString(newchar);
}
System.out.println(converted);
}
}
import java.util.Scanner;
public class Test {
public static void main(String[] srg) {
Scanner scan = new Scanner(System.in);
String originalString = scan.nextLine();
String newString =
originalString
.codePoints()
.map(
character -> {
if (character != ' ') return character - 6;
else return character;
})
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
System.out.println(newString);
}
}