下面的代码不运行完全
The following code's not running completely
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 // 用户输入
在 ser enviada 上写一个 mensagem。
//
之后它说它已被终止。
我不明白为什么它不会 运行 整个代码,是代码有问题还是我的 eclipse 有问题?
当您插入数字并按回车键时,对 xis.nextInt()
的调用会消耗整数但不会消耗下一行字符。因此,当您执行 xis.nextLine()
时,它会读取下一行字符并完成。
解决方法是在 nextInt()
之后添加对 nextLine()
的另一个调用,如下所示:
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();
它已终止,因为当您使用扫描仪 class 进行输入时,它会将 'Enter' 作为输入。
所以当你输入14然后按'enter',所以需要两次输入。第一个是 14,第二个是空字符串。
您好,有一个小改动,您必须使用 next 而不是 nextLine。下面是必要的代码,如果您以错误的格式输入数字,您将得到一个不匹配的异常。
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();
}
}
这是我认为发生的事情。
Scanner
读为“1”和“4”,return从 xis.nextInt()
编辑了你 14
- 输入中的下一个内容是换行(您在输入 14 后输入的 return)。
- 然后您读取一行输入,它将读取 return 直到下一个新行的所有内容。在这种情况下,这是一个空字符串,也就是
xis.nextLine()
returns.
- 如果您随后阅读 另一 行,我想您可能会得到剩余的输入。
要在 String m = xis.nextLine();
之后进行测试,只需添加:
m = xis.nextLine();
这可能不是编写此代码的最佳方式 - 但它应该表明我上面所建议的是否真的发生了。
或者您可以使用 BufferedReader class。显示下面的代码。
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);
}
}
}
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 // 用户输入
在 ser enviada 上写一个 mensagem。
// 之后它说它已被终止。
我不明白为什么它不会 运行 整个代码,是代码有问题还是我的 eclipse 有问题?
当您插入数字并按回车键时,对 xis.nextInt()
的调用会消耗整数但不会消耗下一行字符。因此,当您执行 xis.nextLine()
时,它会读取下一行字符并完成。
解决方法是在 nextInt()
之后添加对 nextLine()
的另一个调用,如下所示:
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();
它已终止,因为当您使用扫描仪 class 进行输入时,它会将 'Enter' 作为输入。
所以当你输入14然后按'enter',所以需要两次输入。第一个是 14,第二个是空字符串。
您好,有一个小改动,您必须使用 next 而不是 nextLine。下面是必要的代码,如果您以错误的格式输入数字,您将得到一个不匹配的异常。
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();
}
}
这是我认为发生的事情。
Scanner
读为“1”和“4”,return从xis.nextInt()
编辑了你 14
- 输入中的下一个内容是换行(您在输入 14 后输入的 return)。
- 然后您读取一行输入,它将读取 return 直到下一个新行的所有内容。在这种情况下,这是一个空字符串,也就是
xis.nextLine()
returns. - 如果您随后阅读 另一 行,我想您可能会得到剩余的输入。
要在 String m = xis.nextLine();
之后进行测试,只需添加:
m = xis.nextLine();
这可能不是编写此代码的最佳方式 - 但它应该表明我上面所建议的是否真的发生了。
或者您可以使用 BufferedReader class。显示下面的代码。
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);
}
}
}