您好我正在尝试制作一个声明一组字符串和一组整数的程序。之后我想根据我写的数字打印到控制台。
例如,如果我声明了这样的内容,
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]);
}
}
你可以告诉我这有什么问题吗?我真的很喜欢编程
答案 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;。