Java题:输入1,2,3,4,5,6,7,8 八个数 按照数组编程,数到五个数跳出来,最后的输出结果是5,2,8,7,1,4,6,3 20
4个回答
展开全部
抱歉,时间仓促,没有实际运行程序,感谢下面评论的同学,这是我改正后的程序。
int[] sequence = {1, 2, 3, 4, 5, 6, 7, 8};
byte isComplete = 0;// 输入数组长度刚好是8,可以利用1 byte(= 8 bit)的二进制数,
// 记录哪一位置的元素已经被删除, 删除,此位设为1,否则是0
int sequenceLength = sequence.length;// 加入输入序列长度项,实现反复循环不越界
int counter = 0; // 计数器
int i = 0; // 数组index
while(isComplete < 255)// 还有元素没被删除,继续循环
{
// 检查数组的第i个元素是否已经被删除,判断式返回非0,
// 代表isComplete的第i位已经被设置为1,即第i个元素已经被删除
// 下面的while循环找到第一个没有被删除的元素
while((isComplete & (128>>i)) != 0)
{
i++;
// 数组已经遍历完一遍,从头开始遍历
if(i % sequenceLength == 0)
{
i = 0;
}
}
// 找到没有被删除的元素,即当前仍然有效的元素,计数器开始计数
counter++;
if(counter == 5)
{
System.out.print("--"+sequence[i]+" ");
isComplete |= 128 >> i; // 标记当前位置已经被删除
counter = 0;
}
i++;
// 数组已经遍历完一遍,从头开始遍历
if(i>0 && i % sequenceLength == 0)
{
i = 0;
}
}
结果与楼主要求一致
int[] sequence = {1, 2, 3, 4, 5, 6, 7, 8};
byte isComplete = 0;// 输入数组长度刚好是8,可以利用1 byte(= 8 bit)的二进制数,
// 记录哪一位置的元素已经被删除, 删除,此位设为1,否则是0
int sequenceLength = sequence.length;// 加入输入序列长度项,实现反复循环不越界
int counter = 0; // 计数器
int i = 0; // 数组index
while(isComplete < 255)// 还有元素没被删除,继续循环
{
// 检查数组的第i个元素是否已经被删除,判断式返回非0,
// 代表isComplete的第i位已经被设置为1,即第i个元素已经被删除
// 下面的while循环找到第一个没有被删除的元素
while((isComplete & (128>>i)) != 0)
{
i++;
// 数组已经遍历完一遍,从头开始遍历
if(i % sequenceLength == 0)
{
i = 0;
}
}
// 找到没有被删除的元素,即当前仍然有效的元素,计数器开始计数
counter++;
if(counter == 5)
{
System.out.print("--"+sequence[i]+" ");
isComplete |= 128 >> i; // 标记当前位置已经被删除
counter = 0;
}
i++;
// 数组已经遍历完一遍,从头开始遍历
if(i>0 && i % sequenceLength == 0)
{
i = 0;
}
}
结果与楼主要求一致
展开全部
不明白你要表达的意思 。数到5跳出,为什么结果是5.2.8.7.1.4.6.3
用一个数来指示数组元素的位置。这个数从1到8,满8跳回1。对8取余实现
用一个数来指示数组元素的位置。这个数从1到8,满8跳回1。对8取余实现
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个数到五个数是什么意思 ,既然数五个数为什么输出结果会是八个数,我没明白题目啥意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个也没有什么难的啊。
不过你的这个输入时自动的还是手动输入的。
不过你的这个输入时自动的还是手动输入的。
更多追问追答
追问
手动输入
追答
那你手动输入40次,你还真愿意啊。
package baidu;
import java.util.Arrays;
import java.util.Scanner;
public class InputTest {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int count=0;
int[] arr=new int[8];
int index=0;
for(int i=0;i<40;i++){
int tmp=sc.nextInt();
if(count==4){
arr[index]=tmp;
index++;
count=0;
}else{
count++;
}
}
System.out.println(Arrays.toString(arr));
}
}
代码还有优化空间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询