public static void main(String[] args) {
Scanner xis = new Scanner(System.in);
System.out.println("Insira o deslocamento desejado.");
int d = xis.nextInt();
System.out.println("Digite a mensagem a ser enviada.");
String m = xis.nextLine();
for (int i = 0; i < m.length(); i++)
{
int x = m.charAt(i) + d;
if(x > 'Z')
{
System.out.println((char)(x - 26));
}
System.out.println((char)x);
}
}
控制台显示的内容:
Insira o deslocamento desejado。
14 //用户的条目
将一个系列用于服用enviada。
// 之后它说已经被终止了。
我不明白为什么它不能运行整个代码,对代码或我的日食有问题吗?
答案 0 :(得分:1)
当您插入数字并按Enter键时,对xis.nextInt()
的调用会消耗整数,但不会消耗下一行字符。因此,当您执行xis.nextLine()
时,它会读取下一行字符并完成。
解决方法是在nextLine()
之后添加另一个nextInt()
来电,如下所示:
System.out.println("Insira o deslocamento desejado.");
int d = xis.nextInt();
xis.nextLine();
System.out.println("Digite a mensagem a ser enviada.");
String m = xis.nextLine();
答案 1 :(得分:1)
嗨,你必须使用下一行而不是下一行的小改动。下面是必要的代码,如果你以错误的格式输入数字,你将得到一个不匹配的例外。
import java.util.Scanner;
public class Practice_1 {
public static void main(String[] args) {
Scanner xis = new Scanner(System.in);
System.out.println("Insira o deslocamento desejado.");
int d = xis.nextInt();
System.out.println("Digite a mensagem a ser enviada.");
String m = xis.next();
for (int i = 0; i < m.length(); i++)
{
int x = m.charAt(i) + d;
if(x > 'Z')
{
System.out.println((char)(x - 26));
}
System.out.println((char)x);
}
xis.close();
}
}
答案 2 :(得分:0)
它已终止,因为当您使用Scanner类进行输入时,将需要输入&#39;作为输入。
因此,当您输入14并按&#39;输入&#39;时,将需要两个输入。第一个是14,第二个是空字符串。
答案 3 :(得分:0)
这是我认为发生的事情。
Scanner
正如所读&#39; 1&#39;和&#39; 4&#39;并从xis.nextInt()
xis.nextLine()
返回的内容。要在String m = xis.nextLine();
添加后进行测试:
m = xis.nextLine();
这可能不是编码的最好方法 - 但它应该表明我上面提到的是否实际发生了什么。
答案 4 :(得分:0)
替代方案,您可以使用BufferedReader类。显示以下代码。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class StringDemo {
public static void main(String[] args) throws NumberFormatException, IOException {
//Scanner xis = new Scanner(System.in);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Insira o deslocamento desejado.");
//int d = xis.nextInt();
int d = Integer.parseInt(br.readLine());
System.out.println("Digite a mensagem a ser enviada.");
//String m = xis.nextLine();
String m = br.readLine();
for (int i = 0; i < m.length(); i++)
{
int x = m.charAt(i) + d;
if(x > 'Z')
{
System.out.println((char)(x - 26));
}
System.out.println((char)x);
}
}
}