Java 以下代码';It’他还没跑完 publicstaticvoidmain(字符串[]args){ 扫描器xis=新扫描器(System.in); System.out.println(“Insira o deslocamento desejado”); int d=xis.nextInt(); System.out.println(“Digite a mensage a ser enviada.”); 字符串m=xis.nextLine(); 对于(int i=0;i'Z') { 系统输出println((char)(x-26)); } System.out.println((char)x); } }

Java 以下代码';It’他还没跑完 publicstaticvoidmain(字符串[]args){ 扫描器xis=新扫描器(System.in); System.out.println(“Insira o deslocamento desejado”); int d=xis.nextInt(); System.out.println(“Digite a mensage a ser enviada.”); 字符串m=xis.nextLine(); 对于(int i=0;i'Z') { 系统输出println((char)(x-26)); } System.out.println((char)x); } },java,eclipse,runtime-error,terminate,Java,Eclipse,Runtime Error,Terminate,这就是控制台显示的内容: 德斯洛卡门托酒店 14//用户输入 给一个男人一个环境 // 在那之后,它说它被终止了 我不明白为什么它不会运行整个代码,这是代码的问题还是我的eclipse的问题?当您插入数字并按enter键时,调用xis.nextInt()会使用整数,但不会使用下一行字符。因此,当您执行xis.nextLine()时,它将读取下一行字符并完成 解决方法是在nextLine()之后添加另一个对nextLine()的调用,如下所示: public static void main(St

这就是控制台显示的内容:

德斯洛卡门托酒店

14//用户输入

给一个男人一个环境

// 在那之后,它说它被终止了


我不明白为什么它不会运行整个代码,这是代码的问题还是我的eclipse的问题?

当您插入数字并按enter键时,调用
xis.nextInt()
会使用整数,但不会使用下一行字符。因此,当您执行
xis.nextLine()
时,它将读取下一行字符并完成

解决方法是在
nextLine()
之后添加另一个对
nextLine()的调用,如下所示:

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); 
    }

}

它被终止,因为当您使用Scanner类进行输入时,它将以“Enter”作为输入


因此,当您输入14并按下“回车”键时,将需要两次输入。第一个是14,第二个是空字符串。

嗨,有一点小变化,你必须使用下一个安装的od 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();
import java.util.Scanner;
公开课实习1{
公共静态void main(字符串[]args){
扫描器xis=新扫描器(System.in);
System.out.println(“Insira o deslocamento desejado”);
int d=xis.nextInt();
System.out.println(“Digite a mensage a ser enviada.”);
字符串m=xis.next();
对于(int i=0;i'Z')
{
系统输出println((char)(x-26));
}
System.out.println((char)x);
}
xis.close();
}
}
以下是我认为发生的事情

  • Scanner
    读取为'1'和'4',并从
    xis.nextInt()返回您14
  • 输入中的下一个内容是一个新行(输入14后输入的报税表)
  • 然后读取一行输入,该行将读取所有内容并返回到下一行。在本例中,这是一个空字符串,
    xis.nextLine()
    返回的内容
  • 如果你接着读另一行,我想你可能会得到其余的输入
String m=xis.nextLine()之后测试此项只需添加:

m=xis.nextLine()


这可能不是编写代码的最佳方式,但它应该表明我上面所建议的是否是实际发生的事情。

或者您可以使用BufferedReader类。显示下面的代码

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();

    }
}
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.util.Scanner;
公共类StringDemo{
公共静态void main(字符串[]args)引发NumberFormatException,IOException{
//扫描器xis=新扫描器(System.in);
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
System.out.println(“Insira o deslocamento desejado”);
//int d=xis.nextInt();
intd=Integer.parseInt(br.readLine());
System.out.println(“Digite a mensage a ser enviada.”);
//字符串m=xis.nextLine();
字符串m=br.readLine();
对于(int i=0;i'Z')
{
系统输出println((char)(x-26));
}
System.out.println((char)x);
}
}
}

谢谢你的回答,我现在就知道了,“xis.nextLine”是错误的。如果输入包含空格
xis.next()
将只得到第一个单词。是的,我没有注意到这一点。我试着用一个词来表达,但它起了作用,我没有想到这一点。谢谢你的注意@这实际上是正确的答案。。感谢@AndersonVieira使用空格对力测试进行评论。。
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); 
        }
    }
}