Java Scanner和错误

时间:2016-01-18 05:33:42

标签: java java.util.scanner identifier

您好我正在尝试制作一个声明一组字符串和一组整数的程序。之后我想根据我写的数字打印到控制台。

例如,如果我声明了这样的内容,

String a[] = a1 a2 a3 a4 a5

int b[] = 10 20 30 40 50

如果我在扫描仪中键入1,我想打印出1和10。

import java.io.*;
import java.lang.*;
import java.util.Scanner;
public class value {

    private static Scanner sc;
    public static void main(String args[]){

      String a[] = {"a1","a2","a3","a4","a5"};
      int b[] = {100, 220, 200, 230, 500};

      sc = new Scanner(System.in);
      System.out.println("type in a number");
      String input = sc.nextLine();

      int i = Integer.parseInt(input);
      int j = i - 1;

      System.out.println(a[j] + b[j]);
    }
  }
你可以告诉我这有什么问题吗?我真的很喜欢编程

3 个答案:

答案 0 :(得分:1)

此答案假设您的int[]String[]数组已被声明。

首先,设置扫描仪并阅读输入。

Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();

在此之后,尝试将String中的输入解析为Integer,这样可以从数组中获取数据。

int j = 0;
try {
    j = Integer.parseInt(input);
catch (NumberFormatException e) {
    System.out.println("NaN");
    System.exit(-1);
}

现在你有一个号码。您现在要做的就是尝试从阵列中获取数据。

try {
    System.out.println(a[j] + " " + b[j]);
catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("Index out of range!");
    System.exit(-1);
}

我们抓住了Exception的失败。第一种情况是输入不是数字。第二个是数组的length小于请求的索引。

您还必须确保遵循数组的第一索引 0 ,而不是 1 的标准。

您的代码示例:

import java.util.Scanner;

public class Value {
    public static void main(String args[]){
        String a[] = {"a1", "a2", "a3", "a4", "a5"};
        int b[] = {100, 220, 200, 230, 500};

        Scanner sc = new Scanner(System.in);
        System.out.println("Type in a number.");
        String input = sc.nextLine();

        int i;
        try {
            i = Integer.parseInt(input);
        } catch (NumberFormatException e) {
            System.out.println("NaN");
            System.exit(-1); // Replace with whatever you want if it fails.
        }
        try {
            System.out.println(a[i] + " " + b[i]);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Index out of range: " + i);
            System.exit(-1); // Again, change to whatever you want.
        }
    }
}

答案 1 :(得分:0)

您可以尝试这样

import java.util.Scanner;
public class Value {
    public static void main(String args[]) {
        String[] a = {"a1", "a2", "a3", "a4", "a5"};
        int[] b = {100, 220, 200, 230, 500};

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            if (choice < 0 || choice > Math.min(a.length, b.length)) {
                System.out.println("out of range...");
            } else {
                System.out.println(a[choice] + "\t" + b[choice]);
           }
        }
    }
}

当您输入0时,它会打印出a1 100,输入1,打印出a2 220

答案 2 :(得分:0)

代码中的问题是main()方法中的System.out.println(a[j] + b[j]); 。它应该在main()中并在}之后移除int j = i - 1;(它是一个额外的括号)

在您的代码中:

。 。

int i = Integer.parseInt(input);
int j = i - 1;
  }

  System.out.println(a[j] + b[j]);
}}

正确的代码:

...

            int i = Integer.parseInt(input);
    int j = i - 1;
    System.out.println(a[j] + b[j]);
}}

此外,您可以添加异常处理程序来处理类似&#34; ArrayIndexOutOfBoundException&#34;。