通过使用循环访问每个索引将字符串数组转换为整数数组
Converting String Array into Integer Array by accessing each indexes using loop
下面是我的示例代码。我正在尝试将 gradeString 转换为 gradeInt,但似乎无法正确完成。当我最后使用 toString.
打印 gradeInt 的值时
上面写着一个空白数组,就像这样:[ ]
感谢您的帮助!
import java.util.*;
class testing{
public static Scanner console = new Scanner(System.in);
public static int studSize;
public static String [] gradeArr = new String[studSize];
public static int [] gradeInt = new int[gradeArr.length];
public static void initialize(){
System.out.print("Please enter student size: ");
String studString = console.nextLine();
studSize = Integer.parseInt(studString);
enterData();
}
public static void enterData(){
System.out.println("Enter student grades separated with dash(-)");
System.out.print("Enter student grade/s: ");
String gradeString = console.nextLine();
gradeArr = gradeString.split("-");
convert();
}
public static void convert(){
for(int i=0; i<gradeInt.length; i++){
gradeInt[i] = Integer.parseInt(gradeArr[i]);
}
print();
}
public static void print(){
System.out.print(Arrays.toString(gradeArr));
System.out.print(Arrays.toString(gradeInt));
}
public static void main(String [] args){
initialize();
//Main and Class Closing Braces
}
}
试试这个。问题是您在输入任何数据之前分配数组的大小等。实际上根本不需要使用 studSize
- 请参阅代码中的注释
public static Scanner console = new Scanner(System.in);
public static int studSize;
public static String [] gradeArr;
public static int [] gradeInt;
public static void initialize(){
// not needed -
System.out.print("Please enter student size: ");
String studString = console.nextLine();
// not needed
studSize = Integer.parseInt(studString);
enterData();
}
public static void enterData(){
System.out.println("Enter student grades separated with dash(-)");
System.out.print("Enter student grade/s: ");
String gradeString = console.nextLine();
gradeArr = gradeString.split("-");
convert();
}
public static void convert(){
// set here as the size is know
gradeInt = new int[gradeArr.length];
for(int i=0; i<gradeArr.length; i++){
// should be carefull of NumberFormatException
gradeInt[i] = Integer.parseInt(gradeArr[i]);
}
print();
}
public static void print(){
System.out.print(Arrays.toString(gradeInt));
}
public static void main(String [] args){
initialize();
//Main and Class Closing Braces
}
我运行你的代码并且它有效
输出:
[95, 85, 75]
Process finished with exit code 0
如果您得到一个空数组,我怀疑您的代码的其他部分可能存在错误。
您 运行 代码的上下文是什么?如果您粘贴其余代码,可能有助于找到错误的真正来源。
解决方案:
就像安迪提到的那样。根本错误包含在这里:
public static int [] gradeInt = new int[gradeArr.length];
您在运行时定义此变量并为其分配与 gradeArr 相同的长度,当时为 0。
这会导致 convert() 方法中发生逻辑错误。
for(int i=0; i<gradeInt.length; i++){
gradeInt[i] = Integer.parseInt(gradeArr[i]);
}
如果 i 小于长度为 0 的 gradeInt,你告诉代码循环。基本上它从不循环。它只是完全跳过循环。
解决此问题的最快方法是像这样修改代码:
不要在运行时为 gradeInt 变量分配长度。将行修改为:
public static int [] gradeInt;
然后将您的 enterData() 方法修改为:
public static void enterData(){
System.out.println("Enter student grades separated with dash(-)");
System.out.print("Enter student grade/s: ");
String gradeString = console.nextLine();
gradeArr = gradeString.split("-");
gradeInt = new int[gradeArr.length];
convert();
}
在您为 "quick fix" 调用 convert
之前添加此行:
gradeInt = new int[gradeArr.length];
下面是我的示例代码。我正在尝试将 gradeString 转换为 gradeInt,但似乎无法正确完成。当我最后使用 toString.
打印 gradeInt 的值时上面写着一个空白数组,就像这样:[ ]
感谢您的帮助!
import java.util.*;
class testing{
public static Scanner console = new Scanner(System.in);
public static int studSize;
public static String [] gradeArr = new String[studSize];
public static int [] gradeInt = new int[gradeArr.length];
public static void initialize(){
System.out.print("Please enter student size: ");
String studString = console.nextLine();
studSize = Integer.parseInt(studString);
enterData();
}
public static void enterData(){
System.out.println("Enter student grades separated with dash(-)");
System.out.print("Enter student grade/s: ");
String gradeString = console.nextLine();
gradeArr = gradeString.split("-");
convert();
}
public static void convert(){
for(int i=0; i<gradeInt.length; i++){
gradeInt[i] = Integer.parseInt(gradeArr[i]);
}
print();
}
public static void print(){
System.out.print(Arrays.toString(gradeArr));
System.out.print(Arrays.toString(gradeInt));
}
public static void main(String [] args){
initialize();
//Main and Class Closing Braces
}
}
试试这个。问题是您在输入任何数据之前分配数组的大小等。实际上根本不需要使用 studSize
- 请参阅代码中的注释
public static Scanner console = new Scanner(System.in);
public static int studSize;
public static String [] gradeArr;
public static int [] gradeInt;
public static void initialize(){
// not needed -
System.out.print("Please enter student size: ");
String studString = console.nextLine();
// not needed
studSize = Integer.parseInt(studString);
enterData();
}
public static void enterData(){
System.out.println("Enter student grades separated with dash(-)");
System.out.print("Enter student grade/s: ");
String gradeString = console.nextLine();
gradeArr = gradeString.split("-");
convert();
}
public static void convert(){
// set here as the size is know
gradeInt = new int[gradeArr.length];
for(int i=0; i<gradeArr.length; i++){
// should be carefull of NumberFormatException
gradeInt[i] = Integer.parseInt(gradeArr[i]);
}
print();
}
public static void print(){
System.out.print(Arrays.toString(gradeInt));
}
public static void main(String [] args){
initialize();
//Main and Class Closing Braces
}
我运行你的代码并且它有效
输出:
[95, 85, 75]
Process finished with exit code 0
如果您得到一个空数组,我怀疑您的代码的其他部分可能存在错误。
您 运行 代码的上下文是什么?如果您粘贴其余代码,可能有助于找到错误的真正来源。
解决方案:
就像安迪提到的那样。根本错误包含在这里:
public static int [] gradeInt = new int[gradeArr.length];
您在运行时定义此变量并为其分配与 gradeArr 相同的长度,当时为 0。
这会导致 convert() 方法中发生逻辑错误。
for(int i=0; i<gradeInt.length; i++){
gradeInt[i] = Integer.parseInt(gradeArr[i]);
}
如果 i 小于长度为 0 的 gradeInt,你告诉代码循环。基本上它从不循环。它只是完全跳过循环。
解决此问题的最快方法是像这样修改代码:
不要在运行时为 gradeInt 变量分配长度。将行修改为:
public static int [] gradeInt;
然后将您的 enterData() 方法修改为:
public static void enterData(){
System.out.println("Enter student grades separated with dash(-)");
System.out.print("Enter student grade/s: ");
String gradeString = console.nextLine();
gradeArr = gradeString.split("-");
gradeInt = new int[gradeArr.length];
convert();
}
在您为 "quick fix" 调用 convert
之前添加此行:
gradeInt = new int[gradeArr.length];