「报数问题java」报数问题流程图
今天给各位分享报数问题java的知识,其中也会对报数问题流程图进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java问题:500个孩子围成圈,从第一个开始报数,逢3退出,然后从下一个孩子继续开始报数,直到只剩下一个
- 2、用Java语言。有10个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
- 3、求个简单的java代码 从1开始报数,共38人,老师要求按1,2,3 重复报数 高手帮忙解决下 急求
- 4、java问题:80个小朋友手拉手围成圈,从第一个开始报数,数到3的离开,
- 5、JAVA编写一群人围成一圈报数从一开始一直报道99凡事遇到七的倍数或含有七的数?
- 6、JAVA围圈报数 问题
java问题:500个孩子围成圈,从第一个开始报数,逢3退出,然后从下一个孩子继续开始报数,直到只剩下一个
逢3退出,我的理解是数字中带3的, 3 13 23 30-39这些都是.
看了一下约瑟夫环,说的是 3的倍数.所以做了,两个判断方法.
isMod3
isMeet3
从实现上来说,用list这样的集合方便一些.数组不具有删除相应元素的能力,只能写方法来处理.
fun1 - list
fun2 - 用一个自定义对象数组
fun3 - 用int[]数组来处理.
你看一下吧.希望对你有帮助.
---------------------------------------------------------------------------------------------------------------------
import java.util.ArrayList;
import java.util.List;
public class Test1 {
public static void main(String[] args) throws Exception {
new Test1().fun1();
new Test1().fun2();
new Test1().fun3();
}
public void fun1() {
List listUser = new ArrayList();
for (int i = 1; i = 500; i++) {
listUser.add(i);
}
int index = 0;
int count = 1;
while (listUser.size() 1) {
// if (isMod3(count++)) {
if (isMeet3(count++)) {
listUser.remove(index);
index--;
}
if (listUser.size() == ++index) {
index = 0;
}
}
System.out.println(listUser.get(0));
}
// 例3,6,9
public boolean isMod3(int x) {
return x % 3 == 0;
}
// 例3,13,23,30,31....
public boolean isMeet3(int x) {
boolean result = false;
while (x 0) {
if (x % 10 == 3) {
result = true;
break;
}
x = x / 10;
}
return result;
}
public void fun2() {
User[] users = new User[500];
for (int i = 0; i users.length; i++) {
users[i] = new User();
users[i].no = i + 1;
}
int index = 0;
int meet = 1;
int count = 0;
while (users.length - count 1) {
if (index == users.length) {
index = 0;
}
if (users[index].isDelete) {
index++;
continue;
}
if (isMeet3(meet)) {
count++;
users[index].isDelete = true;
}
meet++;
index++;
}
for (int i = 0; i users.length; i++) {
if (!users[i].isDelete) {
System.out.println(users[i].no);
}
}
}
class User {
int no = 0;
boolean isDelete = false;
}
public void fun3() {
int[] users = new int[500];
for (int i = 0; i users.length; i++) {
users[i] = i + 1;
}
int index = 0;
int count = 1;
while (users.length 1) {
if (isMeet3(count++)) {
users = arrayRemoveIndex(users, index);
index--;
}
if (users.length == ++index) {
index = 0;
}
}
System.out.println(users[0]);
}
public int[] arrayRemoveIndex(int[] array, int index) {
int[] newArray = new int[array.length - 1];
int arrayIndex = 0;
for (int i = 0; i array.length; i++) {
if (i == index) {
continue;
}
newArray[arrayIndex++] = array[i];
}
return newArray;
}
}
用Java语言。有10个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
public static void joseph(boolean[] array) {
for (int i = 0; i array.length; i++) {
array[i] = true;
}
int counter = 0;// 计数器
int leftCount = array.length;// 剩余人数
int index = 0;// 索引
while (leftCount 1) {
if (array[index]) {
counter++;
if (counter == 3) {
counter = 0;
array[index] = false;
leftCount--;
}
}
index++;
if (index == array.length) {
index = 0;
}
}
for (int i = 0; i array.length; i++) {
if (array[i]) {
System.out.println("剩余人员的位置是" + (i + 1));
}
}
}
public static void main(String[] args) {
boolean[] array = new boolean[10];
joseph(array);
}
求个简单的java代码 从1开始报数,共38人,老师要求按1,2,3 重复报数 高手帮忙解决下 急求
public class number{ int i,num; public number() //构造函数 { for(i=0;i38;i++) if().........//加入循环条件和输入就可以了 }public static void main(String args[]){ new number(); //调用}}需要详细解释或帮助可以加我QQ
java问题:80个小朋友手拉手围成圈,从第一个开始报数,数到3的离开,
这个好像马士兵的视频中有提到 一种写法是面向对象的写法 一种是面向过程的写法。定义一个有下标的数组里面统一给初始化值,每隔3个设置为另一个标识符一个。就这样判断到结尾,第二次先判断是不是退出字符 然后还是间隔3个设置另一个标识符 ,到最后生下来的就是了
JAVA编写一群人围成一圈报数从一开始一直报道99凡事遇到七的倍数或含有七的数?
public static void main(String[] args) {
System.out.println("开始报数:");
for (int i = 1; i 100; i++) {
if (i % 7 == 0 || (i+"").indexOf("7")0){
System.out.print("\n@");
}else{
System.out.print(" "+i);
}
}
System.out.println("报数结束!");
}
JAVA围圈报数 问题
以下是完整示例代码,countThree(50, 0, 3);的意思是50个人,从第1个位置起,每3个出一个。第二个参数就是你的问题的解答。
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
countThree(50, 0, 3);
}
/**
* @param n 人的总数
* @param start 开始报数的序号,start n
* @param m 出列的标记(可以大于n)
*/
private static void countThree(int n, int start, int m) {
ListInteger list = new ArrayListInteger();
//初始化列表
for (int i = 1; i = n; i++) {
list.add(i);
}
while (list.size() 0) {
//将前连个移入列表尾端
for (int j = 0; j m-1; j++) {
list.add(list.remove(start));
}
//打印出列的序号
System.out.println(list.remove(start));
}
}
}
报数问题java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于报数问题流程图、报数问题java的信息别忘了在本站进行查找喔。
发布于:2022-12-01,除非注明,否则均为
原创文章,转载请注明出处。