如何在java程序中获取用户的连续数字?

时间:2016-03-17 21:49:19

标签: java

import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {
public static void main(String[] args) {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT.          
    int a,b,n;
Scanner sc=new Scanner(System.in);
      a=sc.nextInt();
     Scanner sv=new Scanner(System.in);
    b=sv.nextInt();
     Scanner st=new Scanner(System.in);
    n=st.nextInt();
    for(int i=0;i<n;i++)
        {
       int c=0;
        c=2*c*b;
        int result=a+c;
         System.out.print(result+ " ");
      }

  }
}

我尝试使用扫描程序类但它不是由eclipse执行的,因为它只显示扫描程序类的sc,sv和st对象是资源泄露而且从不关闭。

3 个答案:

答案 0 :(得分:0)

好吧,看起来你有一些配置可以防止程序根据资源泄漏(不是Eclipse用户)进行编译和运行。您的代码在我的机器上编译并运行Intellij,因此您有一些选择。

  1. 更改配置以忽略警告/错误。 (不推荐)
  2. 关闭您需要的一个 Scanner。 (scanner.close())您可以从单个扫描仪获得多个值。所以,抛弃其他人。
  3. 要完成(2)另一种方法,您可以使用try-with-resources块,它将在尝试结束时自动关闭。

    try (Scanner sc = new Scanner(System.in)) {
        // put your code to get input here
    } catch (IOException ioe) { ... }
    

    除了您询问的扫描程序问题之外,您的代码中存在重大错误,导致无法获得任何有意义/准确的输出。考虑...

        for (int i = 0; i < n; i++) {
            int c = 0;
            c = 2 * c * b;
            int result = a + c;
            System.out.print(result + " ");
        }
    

    c在每个循环上重新生成并分配值0,因此c = 2 * c * b;将等于0 始终;然后a + c 总是等于a

答案 1 :(得分:-1)

不需要创建新的扫描仪对象......

只是这样做:

int a, b, n;
          Scanner sc = new Scanner(System.in);
        a = sc.nextInt();


        b = sc.nextInt();

        n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            int c = 0;
            c = 2 * c * b;
            final int result = a + c;
            System.out.print(result + " ");
        }

答案 2 :(得分:-1)

当@Xoce发布他的答案时我输入了这个,所以它与他的完全相同:)

我想补充的另一件事是,如果您使用IntelliJ,请尝试按control-alt-i自动缩进代码。

public static void main(String[] args) {
    //Enter your code here. Read input from STDIN. Print output to STDOUT.
    int a,b,n;
    Scanner sc=new Scanner(System.in);
    a=sc.nextInt();
    b=sc.nextInt();
    n=sc.nextInt();
    for(int i=0;i<n;i++)
    {
        int c=0;
        c=2*c*b;
        int result=a+c;
        System.out.print(result+ " ");
    }

}