使用用户输入搜索数组索引来查找字符串



我对编程很陌生,对java也很陌生,所以请耐心等待。

基本上,我试图让用户实现的数字(经过数学运算(用作数组中的索引值,以找出它属于哪种颜色。

示例。用户提交一个整数。比方说66。66 mod 12将是6。使用6,我可以遍历[6]被指定为白色的数组,并打印出白色。

光纤颜色代码图

每种颜色有12个数字。蓝色1-12、橙色13-24等

import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner inputNum = new Scanner(System.in);  // User inputs Intager
System.out.println("Enter Number...");
String[] fiberColors = {"Blue", "Orange", "Green", "Brown", "Slate", "White", "Red", "Black", "Yellow", "Violet", "Rose", "Aqua"};
int input = inputNum.nextInt(); // Read user input

if (input < 145) { 
int modNum = (input- 1) % 12; // Find the modulus number from 12

for (int i = modNum; i == fiberColors.length; i++) {
System.out.println(fiberColors[i]);
}

if (input >= 145) {
System.out.println("Invalid Number/Over 144c"); // If user input is over 144 count
}

}
}      
}

这里有一个有效的解决方案。我添加了一个保护,以防止在解释输入时出现异常。

import java.util.Scanner;
public class LemurienAgileForm {
public LemurienAgileForm() {
Scanner inputNum = new Scanner(System.in);  // User inputs Intager
System.out.println("Enter Number...");
String[] fiberColors = {"Blue", "Orange", "Green", "Brown", "Slate", "White", "Red", "Black", "Yellow", "Violet", "Rose", "Aqua"};
String userIn = inputNum.nextLine();//Read user input
try {
int input = Integer.parseInt(userIn);//Try to get an int value
if (input <= 0 || input > 144) {
System.err.println("Invalid input (out of range)");
} else {
input--;
System.out.println(fiberColors[input / 12]);
}
} catch (NumberFormatException e) {
System.err.println("Invalid input (not a number)");
}
}
}

编辑:如果问题已被正确识别,则通过输入数字,您应该输出由链接表映射的数组中的颜色。我从的声明中得到这个

每种颜色都有12个数字。蓝色1-12、橙色13-24等

现在更改了什么:

  1. 从控制台读取整行而不是数字(用户可能会输入错误(
  2. try-catch块试图将输入解释为数字
  3. 检查输入是否在有效范围内(0、负数和>144无效(
  4. 数组以索引0开头。为了将数字1-12映射到0,将该值减少1,然后除以12。这是使用的整数除数。这会将列的值指定给相应列的颜色值

现在寻找其他可能的解决方案。将行中的值分配给第一列中的颜色。将else块的内容更改为

int index = input % 12 - 1;
if(index < 0) {
index = fiberColors.length - 1;
}
System.out.println(fiberColors[index]);

if条件的原因是模计算返回值1-11 0,从中减去1以调整索引(新范围0-10-1(。现在,最后一个值必须从-1更改为最后一个数组位置。

最新更新