【发布时间】:2015-02-11 20:56:32
【问题描述】:
我是初学者,谁能帮我弄清楚我们在做什么。我正在尝试读取一个字符串并将字符串的每个字符存储在一个数组中。
import java.util.Scanner;
public class CoreMainDigitExtractor {
static Scanner inputString = new Scanner(System.in);
public static void main(String[] args) {
digitExtractor ExtracDig = new digitExtractor();
System.out.println("Enter a String to Extract and Display Vertically in Reverse Order : ");
String input1 = inputString.nextLine();
System.out.println("User input String is : " + input1);
System.out.println("Calling Method 'OrderByMaths' in Object 'ExtracDig' of Class 'digitExtractor', with User Input String....'"+input1+"'");
ExtracDig.OrderbyMaths(input1);
}
}
public class digitExtractor {
int tNumber;
public digitExtractor() {
// TODO Auto-generated constructor stub
}
public void OrderbyMaths(String numberSequence) {
System.out.println("OrderbyMatch : Inside Method 'OrderbyMaths'....");
System.out.println("OrderbyMatch : Initializing a variable of type int 'tNumberLength'.");
int tNumberLength = numberSequence.length();
System.out.println("OrderbyMatch : Variable Initialized of type int 'tNumberLength'.");
System.out.println("OrderbyMaths : Capture length of User Input String into Variable 'tNumberLength'.");
System.out.println("OrderbyMaths : The length of User Input String in Variable 'tNumberLength' is '" + tNumberLength + "'.");
System.out.println("OrderbyMatch : Initializing an Array of type int 'arrNumberSequence'; with Size of Array equal to 'tNumberLength'.");
char arrNumberSequence[] = new char[tNumberLength];
System.out.println("OrderbyMatch : Initialized Array 'arrNumberSequence' with Size '" + arrNumberSequence.length + "'");
int i = 0;
while (i <= arrNumberSequence.length){
arrNumberSequence[i] = numberSequence.charAt(i);
System.out.println("OrderbyMatch : Value in Array Slot '"+arrNumberSequence[i]+"' is '"+ numberSequence.charAt(i)+"'");
i++;
}
}
}
输出
输入要提取的字符串并以相反的顺序垂直显示:
破解
用户输入字符串是:HACK
在类“digitExtractor”的对象“ExtracDig”中调用方法“OrderByMaths”,使用用户输入字符串......“HACK”
OrderbyMatch : 内部方法“OrderbyMaths”....
OrderbyMatch : 初始化 int 'tNumberLength' 类型的变量。
OrderbyMatch : 变量初始化为 int 'tNumberLength' 类型。
OrderbyMaths : 将用户输入字符串的长度捕获到变量“tNumberLength”中。
OrderbyMaths : 变量“tNumberLength”中用户输入字符串的长度为“4”。
OrderbyMatch : 初始化一个 int 'arrNumberSequence' 类型的数组;数组大小等于“tNumberLength”。
OrderbyMatch:初始化数组“arrNumberSequence”,大小为“4”
OrderbyMatch : 数组槽 'H' 中的值是 'H'
OrderbyMatch:数组槽“A”中的值为“A”
OrderbyMatch : 数组槽 'C' 中的值是 'C'
OrderbyMatch : 数组槽 'K' 中的值是 'K'
线程“主”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:4 在 java.lang.String.charAt(未知来源) 在 digitExtractor.OrderbyMaths(digitExtractor.java:23) 在 CoreMainDigitExtractor.main(CoreMainDigitExtractor.java:16)
问候
淡化
【问题讨论】:
-
我猜
i <= arrNumberSequence.length在循环中总是为真,i <= numberSequence.length不一定为真。 -
您是否建议不要使用 WHILE 循环?
-
我稍微更改了代码,但在表示方面看起来更好。但是错误仍然存在。