我在尝试获取索引中的字符时遇到问题
I'm having trouble trying to get the character at an index
这是我的代码:
package ch3;
import java.util.Scanner;
public class caesarCypher {
static String inp;
public static void main(String[] args) {
int input;
int x = 0;
Scanner scan = new Scanner(System.in);
inp = scan.nextLine();
input = inp.length();
System.out.println(input + inp);
while (x < input) {
x += 1;
inp = ((inp.charAt(x)) - 12);
}
}
}
如何将 inp
的索引设置为 x?因此换句话说,我试图减去字符,例如,ASCII table.
上的 a - 12
尝试使用字符数组:
public class caesarCypher {
static String inp;
public static void main(String[] args) {
int input;
Scanner scan = new Scanner(System.in);
inp = scan.nextLine();
char[] inpArr = inp.toCharArray();
input = inp.length();
System.out.println(input + inp);
for( int i = 0; i < input; i++)
{
inpArr[i] -= 12;
}
inp = new String( inpArr);
}
}
作为旁注,您将从下面的代码中得到一个 IndexOutOfBoundsExceptio
n。使用 x,然后递增它。
while (x < input) {
x += 1;
inp = ((inp.charAt(x)) - 12);
}
据我了解您的目标,您想读入一个字符串,然后将其转换为 ascii table?
char 是一个 16 位无符号数,有点像 int 派生,这就是为什么它被解释为 int。
但您正在尝试将一个 int 分配回您的 inp
字符串:
inp = ((inp.charAt(x)) - 12);
这当然失败了。
因为字符串在 java 中是 immutable 你必须每次都创建一个新的字符串。
您可以使用 Character.toString(char c)
从 ascii table 中的 int 值中获取实际的字符。这将为您的输入字符串设置偏移量 12
int offset = 12;
Scanner scan = new Scanner(System.in);
inp = scan.nextLine();
String shifted ="";
for (int i = 0; i < inp.length(); i++) {
char c = (char)((inp.charAt(i)) - offset);
shifted+= Character.toString(c);
}
System.out.println(shifted);
scan.close();
这是我的代码:
package ch3;
import java.util.Scanner;
public class caesarCypher {
static String inp;
public static void main(String[] args) {
int input;
int x = 0;
Scanner scan = new Scanner(System.in);
inp = scan.nextLine();
input = inp.length();
System.out.println(input + inp);
while (x < input) {
x += 1;
inp = ((inp.charAt(x)) - 12);
}
}
}
如何将 inp
的索引设置为 x?因此换句话说,我试图减去字符,例如,ASCII table.
尝试使用字符数组:
public class caesarCypher {
static String inp;
public static void main(String[] args) {
int input;
Scanner scan = new Scanner(System.in);
inp = scan.nextLine();
char[] inpArr = inp.toCharArray();
input = inp.length();
System.out.println(input + inp);
for( int i = 0; i < input; i++)
{
inpArr[i] -= 12;
}
inp = new String( inpArr);
}
}
作为旁注,您将从下面的代码中得到一个 IndexOutOfBoundsExceptio
n。使用 x,然后递增它。
while (x < input) {
x += 1;
inp = ((inp.charAt(x)) - 12);
}
据我了解您的目标,您想读入一个字符串,然后将其转换为 ascii table?
char 是一个 16 位无符号数,有点像 int 派生,这就是为什么它被解释为 int。
但您正在尝试将一个 int 分配回您的 inp
字符串:
inp = ((inp.charAt(x)) - 12);
这当然失败了。
因为字符串在 java 中是 immutable 你必须每次都创建一个新的字符串。
您可以使用 Character.toString(char c)
从 ascii table 中的 int 值中获取实际的字符。这将为您的输入字符串设置偏移量 12
int offset = 12;
Scanner scan = new Scanner(System.in);
inp = scan.nextLine();
String shifted ="";
for (int i = 0; i < inp.length(); i++) {
char c = (char)((inp.charAt(i)) - offset);
shifted+= Character.toString(c);
}
System.out.println(shifted);
scan.close();