3 回答

TA貢獻1943條經驗 獲得超7個贊
你需要這樣的東西:
public static void main(String[] args) {
int val;
int evcounter = 0;
int odcounter = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Enter total no of elements ");
val = sc.nextInt();
System.out.println("Enter values ");
String[] n = new String[val];
String[] eve = new String[(int) Math.ceil(val/2D)];
String[] odd = new String[val/2];
for (int i = 0; i < n.length; i++) {
n[i] = sc.next();
if (i % 2 == 0) {
eve[evcounter] = n[i];
evcounter++;
} else {
odd[odcounter] = n[i];
odcounter++;
}
}
System.out.println("Even array: " + Arrays.toString(eve));
System.out.println("Odd array: " + Arrays.toString(odd));
}

TA貢獻1921條經驗 獲得超9個贊
如果您使用的是 1.8+,那么最好使用易于理解且優雅的函數式風格。
import java.util.Arrays;
import java.util.function.IntPredicate;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class MyTestCase {
@Test
public void evenOddStringArrayPrinting() {
String[] src = new String[] {"HI", "Hello", "Bye"};
final String[] evenArray = getArrayFrom(src, i -> i % 2 == 0);
final String[] oddArray = getArrayFrom(src, i -> i % 2 == 1);
System.out.println(Arrays.toString(evenArray));
System.out.println(Arrays.toString(oddArray));
Assert.assertEquals(2, evenArray.length);
Assert.assertEquals(1, oddArray.length);
}
private String[] getSome(final String[] src, final IntPredicate predicate) {
return IntStream.range(0, src.length)
.filter(predicate)
.mapToObj(i -> src[i])
.collect(Collectors.toList())
.toArray(new String[] {});
}
}

TA貢獻1790條經驗 獲得超9個贊
public static void main(String[] args) {
int evenCounter = 0;
int oddCounter = 0;
Scanner reader = new Scanner(System.in);
System.out.println("Enter total no of elements ");
int num = reader.nextInt();
String[] n = new String[num];
System.out.println("Enter values:");
for (int i=0;i<n.length;i++)
{
n[i]=reader.next();
if (i % 2 == 0) {
evenCounter++;
}
else
{
oddCounter++;
}
}
String[] even = new String[evenCounter];
String[] odd = new String[oddCounter];
for (int z=0;z<n.length;z++)
{
if (z%2==0)
{
for (int j=0;j<even.length;j++)
{
if (even[j]==null)
{
even[j]=n[z];
break;
}
}
}
else if (z%2==1)
{
for (int j=0;j<odd.length;j++)
{
if (odd[j]==null)
{
odd[j]=n[z];
break;
}
}
}
}
這個想法是遍歷原始 String 數組并檢查它的索引是否為偶數/奇數(就像您在代碼中所做的那樣檢查有多少賠率/偶數)。如果索引是偶數,則遍歷 evens 數組并檢查數組的第一個空單元格(在 java 中,當您生成字符串數組時,您會得到一個充滿空值的數組,因此您搜索第一個空值并將其替換為值來自原始數組)。賠率也一樣。
添加回答
舉報