Java space 后无法识别特殊字符
Java unable to recognise special character after space
我必须为以下问题编写一个程序:
我写了下面的代码:
package secret_message;
import java.util.Scanner;
public class Secret_Message {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
int lines, i, codenumber, k;
String code, codepart, codechar2;
char codecharacter1, codecharacter2;
lines = sc.nextInt();
codepart = "";
for (i = 1; i<=lines; i++)
{
code = sc.next();
codecharacter1 = code.charAt(0);
codecharacter2 = code.charAt(1);
codenumber = Character.getNumericValue(codecharacter1);
for (k=1; k<=codenumber; k++)
{
codechar2 = Character.toString(codecharacter2);
codepart = codepart + " " + codechar2;
}
System.out.println(codepart);
codepart = "";
}
}
}
当我在每一行的输入没有 space 时,它工作得很好(例如,如果我写“9+”而不是“9+”)。但是,例如,在写入“9 +”时,出现以下错误:“字符串索引超出范围”。我尝试将代码中的 codecharacter2 = code.charAt(1);
更改为 codecharacter2 = code.charAt(2);
和 codecharacter2 = code.charAt(3);
但没有成功。我还尝试使用 code.replaceAll("\s", "");
创建一个新变量,但这也会删除“9 +”中的“+”。
我知道包含 space 只会产生细微的差别,但问题明确说明了它的必要性。因此,对于如何解决此问题的任何帮助,我将不胜感激!
问题出在这里code = sc.next();
这意味着您只是从输入中获取第一个标记,即第一个字符。相反,您需要按照您的逻辑使用整条线,即
code = sc.nextLine();
更好的解决方案是将整数和字符分开。检查以下代码:
for (i = 1; i<=lines; i++)
{
codenumber= sc.nextInt();
codechar2 = sc.nextLine().charAt(0);
for (k=1; k<=codenumber; k++)
{
codepart = codepart + " " + codechar2;
}
System.out.println(codepart);
codepart = "";
}
我必须为以下问题编写一个程序:
我写了下面的代码:
package secret_message;
import java.util.Scanner;
public class Secret_Message {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
int lines, i, codenumber, k;
String code, codepart, codechar2;
char codecharacter1, codecharacter2;
lines = sc.nextInt();
codepart = "";
for (i = 1; i<=lines; i++)
{
code = sc.next();
codecharacter1 = code.charAt(0);
codecharacter2 = code.charAt(1);
codenumber = Character.getNumericValue(codecharacter1);
for (k=1; k<=codenumber; k++)
{
codechar2 = Character.toString(codecharacter2);
codepart = codepart + " " + codechar2;
}
System.out.println(codepart);
codepart = "";
}
}
}
当我在每一行的输入没有 space 时,它工作得很好(例如,如果我写“9+”而不是“9+”)。但是,例如,在写入“9 +”时,出现以下错误:“字符串索引超出范围”。我尝试将代码中的 codecharacter2 = code.charAt(1);
更改为 codecharacter2 = code.charAt(2);
和 codecharacter2 = code.charAt(3);
但没有成功。我还尝试使用 code.replaceAll("\s", "");
创建一个新变量,但这也会删除“9 +”中的“+”。
我知道包含 space 只会产生细微的差别,但问题明确说明了它的必要性。因此,对于如何解决此问题的任何帮助,我将不胜感激!
问题出在这里code = sc.next();
这意味着您只是从输入中获取第一个标记,即第一个字符。相反,您需要按照您的逻辑使用整条线,即
code = sc.nextLine();
更好的解决方案是将整数和字符分开。检查以下代码:
for (i = 1; i<=lines; i++)
{
codenumber= sc.nextInt();
codechar2 = sc.nextLine().charAt(0);
for (k=1; k<=codenumber; k++)
{
codepart = codepart + " " + codechar2;
}
System.out.println(codepart);
codepart = "";
}