Java 将纯文本输入转换为字符,以获得字母的数值,并按5移位?

Java 将纯文本输入转换为字符,以获得字母的数值,并按5移位?,java,Java,基本上,我在做一个Caesar密码,我需要在java中将字母改为-6位(因此G变成了etc)。我已经设置了一个扫描仪来捕获文本,但我不知道如何将文本转换为其数值来进行实际移位。我可以只接收输入,然后打印出相同的输出 你能帮我查一下班次的密码吗 我知道它与char函数有关,但不知道下一步该怎么做。请仔细阅读此代码。代码在解释应用的方法时是自给自足的 import java.util.*; class help { public static void main(String args[])

基本上,我在做一个Caesar密码,我需要在java中将字母改为-6位(因此G变成了etc)。我已经设置了一个扫描仪来捕获文本,但我不知道如何将文本转换为其数值来进行实际移位。我可以只接收输入,然后打印出相同的输出

你能帮我查一下班次的密码吗


我知道它与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);
  }
}