Java 正在拆分字符串并将其放在int数组中
我必须输入一个带有数字的字符串,例如:1,2,3,4,5。Java 正在拆分字符串并将其放在int数组中,java,arrays,string,int,Java,Arrays,String,Int,我必须输入一个带有数字的字符串,例如:1,2,3,4,5。 这是输入的一个样本,然后我必须把它放在INT数组中,这样我就可以对它进行排序,但它没有按它应该的方式工作 package array; import java.util.Scanner; public class Array { public static void main(String[] args) { String input; int length, count, size;
这是输入的一个样本,然后我必须把它放在INT数组中,这样我就可以对它进行排序,但它没有按它应该的方式工作
package array;
import java.util.Scanner;
public class Array {
public static void main(String[] args) {
String input;
int length, count, size;
Scanner keyboard = new Scanner(System.in);
input = keyboard.next();
length = input.length();
size = length / 2;
int intarray[] = new int[size];
String strarray[] = new String[size];
strarray = input.split(",");
for (count = 0; count < intarray.length ; count++) {
intarray[count] = Integer.parseInt(strarray[count]);
}
for (int s : intarray) {
System.out.println(s);
}
}
}
封装阵列;
导入java.util.Scanner;
公共类数组{
公共静态void main(字符串[]args){
字符串输入;
整数长度、计数、大小;
扫描仪键盘=新扫描仪(System.in);
输入=键盘。下一步();
长度=输入。长度();
尺寸=长度/2;
int intarray[]=新的int[size];
字符串字符串[]=新字符串[大小];
strarray=input.split(“,”);
对于(计数=0;计数
对于输入1,2,3,4,5
输入长度为9<整数数学中的code>9/2=4,因此您只存储前四个变量,而不是全部5个变量
即使你修复了这个问题,如果你输入10,11,12,13
如果您使用1,2,3,4,50
作为输入,那么它(偶然)会起作用,奇怪的是:-)
你做这样的事情会更好
String[] strArray = input.split(",");
int[] intArray = new int[strArray.length];
for(int i = 0; i < strArray.length; i++) {
intArray[i] = Integer.parseInt(strArray[i]);
}
String[]strArray=input.split(“,”);
int[]intArray=新的int[strArray.length];
对于(int i=0;i
作为将来的参考,当您遇到错误时,我强烈建议将其与代码一起发布。您可能没有一个拥有jdk的人随时可以编译代码来调试它!:) 您正在进行整数除法,因此如果用户碰巧输入奇数个输入,您将丢失正确的长度-这是我注意到的一个问题。正因为如此,当我用“1,2,3,4,5,6,7”的输入来运行代码时,我的最后一个值被忽略…让我们考虑输入为“1,2,3,4”。 这意味着输入的长度是7。那么现在你写的大小是7/2=3.5。但由于大小是一个
int
,因此将四舍五入为3。简而言之,您正在丢失1个值
如果您按照以下方式重写代码,它应该可以工作:
String input;
int length, count, size;
Scanner keyboard = new Scanner(System.in);
input = keyboard.next();
length = input.length();
String strarray[] = input.split(",");
int intarray[] = new int[strarray.length];
for (count = 0; count < intarray.length ; count++) {
intarray[count] = Integer.parseInt(strarray[count]);
}
for (int s : intarray) {
System.out.println(s);
}
字符串输入;
整数长度、计数、大小;
扫描仪键盘=新扫描仪(System.in);
输入=键盘。下一步();
长度=输入。长度();
字符串strarray[]=input.split(“,”);
int intarray[]=新int[strarray.length];
对于(计数=0;计数
String input=“2,1,3,4,5,10100”;
String[]strings=input.split(“,”);
int[]number=新的int[strings.length];
for(int i=0;i
稍微改变一下你做事的顺序。你似乎被2除了,没有什么特别的原因
虽然您的应用程序不能保证输入由分号分隔的变量组成的字符串,但您可以很容易地让它这样做:
package com;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// Good practice to initialize before use
Scanner keyboard = new Scanner(System.in);
String input = "";
// it's also a good idea to prompt the user as to what is going on
keyboardScanner : for (;;) {
input = keyboard.next();
if (input.indexOf(",") >= 0) { // Realistically we would want to use a regex to ensure [0-9],...etc groupings
break keyboardScanner; // break out of the loop
} else {
keyboard = new Scanner(System.in);
continue keyboardScanner; // recreate the scanner in the event we have to start over, just some cleanup
}
}
String strarray[] = input.split(","); // move this up here
int intarray[] = new int[strarray.length];
int count = 0; // Declare variables when they are needed not at the top of methods as there is no reason to allocate memory before it is ready to be used
for (count = 0; count < intarray.length; count++) {
intarray[count] = Integer.parseInt(strarray[count]);
}
for (int s : intarray) {
System.out.println(s);
}
}
}
package-com;
导入java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
//使用前初始化的良好实践
扫描仪键盘=新扫描仪(System.in);
字符串输入=”;
//提示用户正在发生什么也是一个好主意
键盘扫描仪:用于(;;){
输入=键盘。下一步();
如果(input.indexOf(“,”>)=0{//实际上,我们希望使用正则表达式来确保[0-9],…等分组
断开键盘扫描仪;//断开循环
}否则{
键盘=新扫描仪(System.in);
继续keyboardScanner;//如果必须重新开始,请重新创建扫描仪,只需进行一些清理
}
}
String strarray[]=input.split(,“”;//将其移到此处
int intarray[]=新int[strarray.length];
int count=0;//在需要时声明变量,而不是在方法的顶部,因为在准备使用内存之前没有理由分配内存
对于(计数=0;计数
类似这样的内容:
public static void main(String[] args) {
String N = "ABCD";
char[] array = N.toCharArray();
// and as you can see:
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
}
Java 8提供了一种基于流的手动迭代替代方案:
int[] intArray = Arrays.stream(input.split(","))
.mapToInt(Integer::parseInt)
.toArray();
如果输入可能包含无法转换为整数的字符序列,请准备捕获NumberFormatException
。List-stringList=new-ArrayList(Arrays.asList(arr.split(“,”));
List<String> stringList = new ArrayList<String>(Arrays.asList(arr.split(",")));
List<Integer> intList = new ArrayList<Integer>();
for (String s : stringList)
intList.add(Integer.valueOf(s));
List intList=new ArrayList();
用于(字符串s:stringList)
intList.add(Integer.valueOf(s));
“没有按应有的方式工作”以什么方式?错误?在输入错误的情况下不起作用?s总是空的?strArr=input.split(',')
然后只需将strArr复制到一个整数,我建议您改为使用:numbers[i]=Integer.parseInt(strings[i].trim()),否则,如果字符串为“4,22,42”,则会引发异常。存在除以2的原因是假设每个数字都有一个对应的逗号。当然,我们知道这是一个有缺陷的假设,但我确信这是OP当时的想法。@下一个投票者,至少要评论下一个投票的原因。@K_7“输入一个数字字符串,例如:1,2,3,4,5
”而不是“ABCD”注意:对于Android开发者,您还需要min SDK版本24和Java 8。这并不能回答问题。问题在于创建一个int数组,而不是列表
。
List<String> stringList = new ArrayList<String>(Arrays.asList(arr.split(",")));
List<Integer> intList = new ArrayList<Integer>();
for (String s : stringList)
intList.add(Integer.valueOf(s));