Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的控制台输入_Java - Fatal编程技术网

Java中的控制台输入

Java中的控制台输入,java,Java,这是一个简单的代码,但我无法理解为什么它接受两行输入: import java.io.*; import java.util.*; public class Solution { public static void main(String[] args) { Scanner scan = new Scanner (System.in); String inputString = scan.nextLine(); int n = Integer.parseInt (i

这是一个简单的代码,但我无法理解为什么它接受两行输入:

import java.io.*;
import java.util.*;

public class Solution {

public static void main(String[] args) {
    Scanner scan = new Scanner (System.in);
    String inputString = scan.nextLine();
    int n = Integer.parseInt (inputString);
    for (int i = 1; i <= n; ++i) {
        inputString = scan.nextLine();
        int num = Integer.parseInt (inputString);
        System.out.println ("Checking prime of: " + num);

        for (int j = 2; j*j < num; ++j) {
            if (num % j == 0) {
                System.out.println ("Not prime");
                break;
            }
        }
        System.out.println ("Prime");
    }
}
}
程序将打印以下内容:

Checking prime of: 12
Not prime
Prime
Checking prime of: 5
Prime
Checking prime of: 7
Prime
注意上面的第二个素数,它没有消耗任何输入


我一定是犯了一个简单的错误,但我想不出是什么错了。如果有人能指出我做错了什么,我将不胜感激。

每一个周期都会打印这一行

System.out.println ("Prime");
第一个循环的
中添加一个标志变量

boolean isPrime = true;
在您的
中,如果

if (num % j == 0) {
    isPrime = false;
    break;
}
那么还有一个条件

if (isPrime) {
    System.out.println ("Prime");
} else {
    System.out.println ("Not prime");
}

就这样

每一个周期都会打印这一行

System.out.println ("Prime");
for (int j = 2; j*j < num; ++j) {
            if (num % j == 0) {
                System.out.println ("Not prime");
                break;
            }
        }
System.out.println ("Prime");
第一个循环的
中添加一个标志变量

boolean isPrime = true;
在您的
中,如果

if (num % j == 0) {
    isPrime = false;
    break;
}
那么还有一个条件

if (isPrime) {
    System.out.println ("Prime");
} else {
    System.out.println ("Not prime");
}
这就是(intj=2;j*jfor (int j = 2; j*j < num; ++j) { if (num % j == 0) { System.out.println ("Not prime"); break; } } System.out.println ("Prime");
如果(num%j==0){ System.out.println(“非素数”); 打破 } } System.out.println(“Prime”);
最后一行是双向调用的。您需要初始化一个标志来帮助您判断循环是否提前结束,或者在打印“Not prime”时返回(int j=2;j*j

最后一行是双向调用的。您需要初始化一个标志来帮助您确定循环是否提前结束,或者只要在打印“Not prime”时返回即可。

您在main方法的第2行进行扫描,然后再次在循环的顶部进行扫描。第一个方法消耗第一行输入,但您所做的只是将其解析为int,您不检查它,也不为它输出任何内容。

您在主方法的第二行进行扫描,然后再次在循环的顶部进行扫描。第一个使用第一行输入,但您所做的只是将其解析为int,不检查它,也不为它输出任何内容。

import java.io.*;
    import java.io.*;
        import java.util.*;

        class Solution {

         public static void main(String[] args) {
          Scanner scan = new Scanner (System.in);
            String inputString = scan.nextLine();
         int n = Integer.parseInt (inputString);
       a: for (int i = 1; i <= n; ++i) {
          inputString = scan.nextLine();
        int num = Integer.parseInt (inputString);
        System.out.println ("Checking prime of: " + num);

       for (int j = 2; j*j <= num; ++j) {
            if (num % j == 0) {
             System.out.println ("Not prime");
            continue a;
          }
     }
    System.out.println ("Prime");
   }
}
 }
导入java.util.*; 类解决方案{ 公共静态void main(字符串[]args){ 扫描仪扫描=新扫描仪(System.in); String inputString=scan.nextLine(); int n=Integer.parseInt(inputString); a:for(inti=1;i
importjava.io.*;
导入java.util.*;
类解决方案{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
String inputString=scan.nextLine();
int n=Integer.parseInt(inputString);

a:for(int i=1;i)在for
循环的
后面有一个语句
System.out.println(“Prime”);
,因此它总是打印“Prime”,无论您输入什么以及实际数字是否为素数。请注意,
for
内部循环中的
break;
只跳出内部循环,而不是跳出外部循环。在
for
循环后有一条语句
System.out.println(“prime”);
,因此它总是打印“prime”,不管你输入什么,不管实际数字是否为素数。请注意,
for
内循环中的
break;
只从内循环跳出,而不是从外循环跳出。你说得太对了,我真不敢相信我漏掉了。非常感谢你指出这一点。我认为这与我的阅读方式有关g控制台输入。@ash我很高兴它有帮助^^别忘了回答你说得对,我简直不敢相信我错过了。非常感谢你指出这一点。我以为这与我如何阅读控制台输入有关。@ash我很高兴它有帮助^别忘了回答