在字符串中检测空格键的问题
Problems at detecting spacebars at Strings
所以我正在做一个接受用户输入的程序,当它找到与数字相似的字符时,它会用数字替换它。 (例如,它将 O 替换为 0,将 e 替换为 3,等等)问题是,当它找到空白 space 时,一切都变得一团糟。您可以通过编译代码来检查输出是否完全混乱。
/* Program to encrypt text replacing some letters by similar numbers
Done by: Gabriel Mello
*/
import java.util.Scanner;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String input; //Allocating space for user input
char[] output=new char[100000]; //Allocating space for final output
while(true){ // Lets it work as many times as wished
System.out.println("Escribí la frase que quieras transformar"); // Spanish for input your frase
input=sc.next(); //Takes user input
for(int i=0; i<=input.length()-1;i++){ //Iterates over every char in the input
switch(input.charAt(i)){//Checks wether the current digit is valid for replacement,
case 'O': // if it is, it replaces it, if not, it leaves it as it is.
case 'o': output[i]='0';
break;
case 'L':
case 'l':
case 'I':
case 'i': output[i]='1';
break;
case 'Z':
case 'z': output[i]='2';
break;
case 'E':
case 'e': output[i]='3';
break;
case 'A':
case 'a': output[i]='4';
break;
case 'S':
case 's': output[i]='5';
break;
case 'G':
case 'g': output[i]='6';
break;
case 'T':
case 't': output[i]='7';
break;
case 'B':
case 'b': output[i]='8';
break;
case 'P':
case 'p': output[i]='9';
break;
default: output[i]=input.charAt(i);
}
}
System.out.println(output); //Prints the output
for(int i=0;i<=output.length-1;i++){ //Resets the output array
output[i]=' ';
}
}
}
}
扫描仪输入在空格处拆分。因此,如果您输入 12 34
,您的代码看到的第一个输入是 12
。它运行 for(int i=0; i<=input.length()-1;i++)
循环,然后 while 循环找到另一个输入 34
并再次运行它。请参阅 Java 文档:
A Scanner breaks its input into tokens using a delimiter pattern, which by default matches whitespace.
将 input=sc.next()
替换为 input=sc.nextLine()
以修复它。
所以我正在做一个接受用户输入的程序,当它找到与数字相似的字符时,它会用数字替换它。 (例如,它将 O 替换为 0,将 e 替换为 3,等等)问题是,当它找到空白 space 时,一切都变得一团糟。您可以通过编译代码来检查输出是否完全混乱。
/* Program to encrypt text replacing some letters by similar numbers
Done by: Gabriel Mello
*/
import java.util.Scanner;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String input; //Allocating space for user input
char[] output=new char[100000]; //Allocating space for final output
while(true){ // Lets it work as many times as wished
System.out.println("Escribí la frase que quieras transformar"); // Spanish for input your frase
input=sc.next(); //Takes user input
for(int i=0; i<=input.length()-1;i++){ //Iterates over every char in the input
switch(input.charAt(i)){//Checks wether the current digit is valid for replacement,
case 'O': // if it is, it replaces it, if not, it leaves it as it is.
case 'o': output[i]='0';
break;
case 'L':
case 'l':
case 'I':
case 'i': output[i]='1';
break;
case 'Z':
case 'z': output[i]='2';
break;
case 'E':
case 'e': output[i]='3';
break;
case 'A':
case 'a': output[i]='4';
break;
case 'S':
case 's': output[i]='5';
break;
case 'G':
case 'g': output[i]='6';
break;
case 'T':
case 't': output[i]='7';
break;
case 'B':
case 'b': output[i]='8';
break;
case 'P':
case 'p': output[i]='9';
break;
default: output[i]=input.charAt(i);
}
}
System.out.println(output); //Prints the output
for(int i=0;i<=output.length-1;i++){ //Resets the output array
output[i]=' ';
}
}
}
}
扫描仪输入在空格处拆分。因此,如果您输入 12 34
,您的代码看到的第一个输入是 12
。它运行 for(int i=0; i<=input.length()-1;i++)
循环,然后 while 循环找到另一个输入 34
并再次运行它。请参阅 Java 文档:
A Scanner breaks its input into tokens using a delimiter pattern, which by default matches whitespace.
将 input=sc.next()
替换为 input=sc.nextLine()
以修复它。