while循环

do-while循环

附:String常用方法

嵌套循环练习
练习1:打印100以内所有质数
class PrimeNumberTest01 {
public static void main(String[] args){
long start = System.currentTimeMillis();
int sumNumber = 0;
boolean isFlags = true;
for(int i = 2; i <= 100000; i++){
for(int j = 2; j <= Math.sqrt(i); j++){
if(i % j == 0){
isFlags = false;
break;
}
}
if(isFlags == true){
sumNumber++;
}
isFlags = true;
}
long end = System.currentTimeMillis();
System.out.println("程序运行时间:" + (end - start) + "\t100_000中有多少个素数:" + sumNumber);
}
}
class PrimeNumberTest02 {
public static void main(String[] args){
long start = System.currentTimeMillis();
int sumNumber = 0;
label:for (int i = 2; i <= 100000; i++){
for(int j = 2; j <= Math.sqrt(i); j++){
if(i % j == 0){
continue label;
}
}
sumNumber++;
}
long end = System.currentTimeMillis();
System.out.println("程序运行时长是:" + (end - start));
System.out.println("质数的个数:" + sumNumber);
}
}
练习2:猜数字游戏
import java.util.Scanner;
import java.util.Random;
class GuessNumberTest01 {
public static void main(String[] args){
Random random = new Random();
int randNumber = random.nextInt(100);
int sum = 0;
for( ; ; ){
int limits = 99;
int perNumber;
while(true){
System.out.print("请猜点数(输入一个自然数最大取值为:" + limits + " ): ");
try{
Scanner scanner = new Scanner(System.in);
perNumber = scanner.nextInt();
if(perNumber < 0 || perNumber > limits){
System.out.println("输入的数字超出范围,请重试\n");
continue;
}else break;
}catch(Exception e){
System.out.println("输入违规,请重试\n");
}
}
sum++;
if(perNumber == randNumber){
System.out.println("猜中了");
System.out.println("随机数是:" + randNumber);
System.out.println("猜中的数是:" + perNumber);
System.out.println("用时:" + sum + "次");
break;
}else if(perNumber > randNumber){
System.out.println("猜大了");
}else{
System.out.println("猜小了");
}
}
}
}
练习3:打印1-1000之内的完数
class AriTest01 {
public static void main(String[] args){
for(int i = 1; i <= 1000; i++){
int sum = 0;
for(int j = 1; j < i; j++){
if(i % j == 0){
sum += j;
}
}
if(sum == i){
System.out.println(i);
}
}
}
}
练习4:调和级数从第多少项开始值大于10
class AriTest02{
public static void main(String[] args){
double sum = 0.0;
int num = 1;
for( ; ; ){
sum += 1.0 / num;
if(sum > 10.0){
break;
}
num++;
}
System.out.println("数值为:" + sum);
System.out.println("第 " + num + " 项,大于10");
}
}
练习5:打印菱形
class PrintTest01{
public static void main(String[] args){
for(int i = 1; i <= 5; i++){
for(int j = 4; j >= i; j--){
System.out.print(" ");
}
for(int k = 1; k <= i; k++){
System.out.print("* ");
}
System.out.println();
}
for(int i = 1; i <= 4; i++){
for(int a = 1; a <= i; a++){
System.out.print(" ");
}
for(int b = 4; b >= i; b--){
System.out.print("* ");
}
System.out.println();
}
}
}
练习6:输出十三位条形码
import java.util.Scanner;
class AriTest03 {
public static void main(String[] args){
String perValue = "";
String value = "";
label1:while(true){
try{
System.out.print("请输入一个十二位数字:");
Scanner scanner = new Scanner(System.in);
value = scanner.next();
if(value.length() <= 11 || value.length() > 12){
System.out.println("输入超出范围");
continue label1;
}
}catch(Exception e){
System.out.println("输入的数字违规\n");
continue label1;
}
label2:for(int i = 0; i < 12; i++){
char numi = value.charAt(i);
boolean isFlag = true;
for(int j = 0; j < 10; j++){
if(numi == '\u0030' + j){
perValue = perValue + numi;
continue label2;
}
}
if(isFlag){
System.out.println("输入的值非数字\n");
continue label1;
}
}
int oddNumber = 0;
int evenNumber = 0;
for(int i = 0; i < 12; i++){
String tempi = perValue.substring(i,i+1);
int numi = Integer.parseInt(tempi);
if((i+1) % 2 != 0){
oddNumber += numi;
}else{
evenNumber += numi;
}
}
int result1 = oddNumber + evenNumber * 3;
int result2 = (10 - (result1 % 10)) % 10;
System.out.println(perValue);
System.out.println(oddNumber);
System.out.println(evenNumber);
System.out.println("十三位条形码:" + perValue + result2);
break;
}
}
}
练习7:判断身体健康
import java.util.Scanner;
class AriTest04 {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("请输入身高(cm):");
int height = scanner.nextInt();
System.out.print("请输入体重(斤):");
int weight = scanner.nextInt();
int standard = (height - 108) * 2;
if(weight >= standard - 10 && weight <= standard + 10){
System.out.println("当前身体健康");
}else if(weight <= standard - 10){
System.out.println("太瘦了");
}else{
System.out.println("太胖了");
}
}
}
项目一:家庭记账系统
class FamilyAccountTest01 {
public static void main(String[] args){
boolean isFlag = true;
int balance = 10000;
String details = "收支\t账户金额\t收支金额\t说 明\n";
while(isFlag){
System.out.println("-----------------家庭收支记账软件-----------------");
System.out.println(" 1 收支明细");
System.out.println(" 2 登记收入");
System.out.println(" 3 登记支出");
System.out.println(" 4 退 出\n");
System.out.print(" 请选择(1-4):");
char selection = Utility.readMenuSelection();
System.out.println();
switch(selection){
case '1':
System.out.println("-----------------当前收支明细记录-----------------");
System.out.println(details);
System.out.println("--------------------------------------------------\n");
break;
case '2':
System.out.print("本次收入金额:");
int addMoney = Utility.readNumber();
System.out.print("本次收入说明:");
String addDetails = Utility.readString();
balance += addMoney;
details += ("收入" + "\t" + balance + "\t\t" + addMoney + "\t\t" + addDetails + "\n");
System.out.println();
break;
case '3':
System.out.print("本次支出金额:");
int minusMoney = Utility.readNumber();
System.out.print("本次支出说明:");
String minusDetails = Utility.readString();
balance -= minusMoney;
details += ("支出" + "\t" + balance + "\t\t" + minusMoney + "\t\t" + minusDetails + "\n");
System.out.println();
break;
case '4':
System.out.print("确认是否退出(Y/N):");
char confirm = Utility.readConfirmSelection();
if(confirm == 'Y'){
isFlag = false;
}
}
}
}
}
import java.util.Scanner;
public class Utility {
private static Scanner scanner = new Scanner(System.in);
public static char readMenuSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1);
c = str.charAt(0);
if (c != '1' && c != '2' && c != '3' && c != '4') {
System.out.print("选择错误,请重新输入:");
} else break;
}
return c;
}
public static int readNumber() {
int n;
for (; ; ) {
String str = readKeyBoard(4);
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.print("数字输入错误,请重新输入:");
}
}
return n;
}
public static String readString() {
String str = readKeyBoard(8);
return str;
}
public static char readConfirmSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1).toUpperCase();
c = str.charAt(0);
if (c == 'Y' || c == 'N') {
break;
} else {
System.out.print("选择错误,请重新输入:");
}
}
return c;
}
private static String readKeyBoard(int limit) {
String line = "";
while (scanner.hasNext()) {
line = scanner.nextLine();
if (line.length() < 1 || line.length() > limit) {
System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步