Java 数组中的移位
我希望代码将任何小于20的数字移到数组的末尾,并且只打印大于20的数字,但它不会继续打印 13和3,而它不应该 这是输出: 剩余人数:2213326 守则:Java 数组中的移位,java,arrays,Java,Arrays,我希望代码将任何小于20的数字移到数组的末尾,并且只打印大于20的数字,但它不会继续打印 13和3,而它不应该 这是输出: 剩余人数:2213326 守则: public class Test { public static void main (String[]args){ int[]cpoies = {22,12,13,4,3,2,26}; int numOfNumbers=cpoies.length; for(int i=0;i<c
public class Test {
public static void main (String[]args){
int[]cpoies = {22,12,13,4,3,2,26};
int numOfNumbers=cpoies.length;
for(int i=0;i<cpoies.length;i++){
if(cpoies[i] < 20 ){
for(int j=i;j<cpoies.length-1;j++)
cpoies[j]=cpoies[j+1];
--numOfNumbers;
}}
System.out.println("The remained : ");
for(int i=0;i<numOfNumbers;i++){
System.out.println(cpoies[i]);
}
}}
公共类测试{
公共静态void main(字符串[]args){
int[]cpoies={22,12,13,4,3,2,26};
int numOfNumbers=cpoies.length;
对于(inti=0;i如果你的数字小于20,不要增加i。因为在你的代码中,你将i+1元素移动到第i个位置
if(cpoies[i] < 20 ){
for(int j=i;j<cpoies.length-1;j++)
cpoies[j]=cpoies[j+1];
--numOfNumbers;
i--;
}}
这不是交换。您正在覆盖数组中的现有数据,而不是进行交换。您需要一个交换变量
for(int i=0;i<cpoies.length;i++){
if(cpoies[i] < 20 ){
for(int j=i;j<cpoies.length-1;j++)
cpoies[j]=cpoies[j+1];
--numOfNumbers;
}
}
对于(int i=0;i您可以尝试此
public class Test {
public static void main (String[]args){
int[]cpoies = {22,12,13,4,3,2,26};
int numOfNumbers=cpoies.length;
for(int i=0;i<cpoies.length;i++){
if(cpoies[i] < 20 ){
int temp = cpoies[i];
for(int j=i+1;j<cpoies.length;j++) {
if(cpoies[j] > 20) {
cpoies[i] = cpoies[j];
cpoies[j] = temp;
numOfNumbers--;
}
}
}
}
System.out.println("The remained : ");
for(int i=0;i<=cpoies.length-numOfNumbers;i++){
System.out.println(cpoies[i]);
}
}}
公共类测试{
公共静态void main(字符串[]args){
int[]cpoies={22,12,13,4,3,2,26};
int numOfNumbers=cpoies.length;
对于(int i=0;i,除了已经给出的所有答案之外,这里是所有大数字的开始。由于我希望的中断注释,更有效一点
public class Test {
public static void main (String[]args){
int[]numbers = {22,12,13,4,3,2,26};
int numOfNumbers=numbers.length;
for(int i=0;i<numbers.length;i++){
if(numbers[i] > 20){
for(int j=i;j>0;j--)
if (numbers[j-1]>20){
break;
numOfNumbers=j;
}
tempnum=numbers[j];
numbers[j]=numbers[j-1];
numbers[j-1]=tempnum;
}}
System.out.println("The remained : ");
for(int i=0;i<=numOfNumbers;i++){
System.out.println(numbers[i]);
}
}
}
公共类测试{
公共静态void main(字符串[]args){
int[]数={22,12,13,4,3,2,26};
int numOfNumbers=numbers.length;
对于(int i=0;i 20){
对于(int j=i;j>0;j--)
如果(数字[j-1]>20){
打破
numOfNumbers=j;
}
tempnum=数字[j];
数字[j]=数字[j-1];
数字[j-1]=tempnum;
}}
System.out.println(“剩下的:”);
对于(int i=0;iI)我会写出每次迭代后你的cpoies
数组是什么样子的移位到数组的末尾很重要吗?数字保持顺序很重要吗?或者如果数字在数组中移动,并且你将其从低到高排序,这会很好吗?
public class Test {
public static void main (String[]args){
int[]cpoies = {22,12,13,4,3,2,26};
int numOfNumbers=cpoies.length;
for(int i=0;i<cpoies.length;i++){
if(cpoies[i] < 20 ){
int temp = cpoies[i];
for(int j=i+1;j<cpoies.length;j++) {
if(cpoies[j] > 20) {
cpoies[i] = cpoies[j];
cpoies[j] = temp;
numOfNumbers--;
}
}
}
}
System.out.println("The remained : ");
for(int i=0;i<=cpoies.length-numOfNumbers;i++){
System.out.println(cpoies[i]);
}
}}
public class Test {
public static void main (String[]args){
int[]numbers = {22,12,13,4,3,2,26};
int numOfNumbers=numbers.length;
for(int i=0;i<numbers.length;i++){
if(numbers[i] > 20){
for(int j=i;j>0;j--)
if (numbers[j-1]>20){
break;
numOfNumbers=j;
}
tempnum=numbers[j];
numbers[j]=numbers[j-1];
numbers[j-1]=tempnum;
}}
System.out.println("The remained : ");
for(int i=0;i<=numOfNumbers;i++){
System.out.println(numbers[i]);
}
}
}