先写思路,再写代码,思路清晰,才能写对代码
7-6 求1+2+...+n的和
思路:
运用expression的字符串输出
重点:
expression输出
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.close();
int sum = 0;
String expression = "";
for(int i = 1;i<=n;i++)
{
sum += i;
if(i<n){
expression +=i+"+";
}
else{
expression +=i;
}
}
expression +="="+sum;
System.out.println(expression);
}
}
知识点:
expression输出
7-7 数字三角形(上三角)
思路:
充分运用两个for循环,一个掌控行数,一个掌控输出的数字
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = n;
scanner.close();
int number = 1; // 当前要输出的数字
for (int i = 1; i <= n; i++)
{
// 输出前置空格,以形成上三角的效果
System.out.print("");
// 输出当前层的数字
for (int k = 1; k <= m; k++) {
// 每个数字占四个字符位置,不足部分用空格填充
System.out.printf("%4d", number++);
}
m--;
System.out.println(); // 每层输出后换行
}
}
}
知识点:
输入
int n = scanner.nextInt(); //输入n
int m = scanner.nextInt(); //输入m
//需要输入两次
数字所占空格
for (int k = 1; k <= m; k++) {
// 每个数字占四个字符位置,不足部分用空格填充
System.out.printf("%4d", number++);
}
换行
System.out.println(); // 每层输出后换行
7-8 百钱买百鸡
思路:
这种复杂的配凑问题,不要去想枚举去解,充分利用for循环语句
像这题我们就用了两个for循环,让代码自己去配凑,一但成功就输出它
代码(一):
public class Nain {
public static void main(String[] args) {
final int totalMoney = 100; // 总共有100块钱
final int totalChickens = 100; // 总共有100只鸡
// 公鸡价格5块一只,母鸡价格3块一只,小鸡三只1块
for (int male = 0; male <= totalMoney / 5; male++) { // 公鸡数量
for (int female = 0; female <= totalMoney / 3; female++) { // 母鸡数量
int chicks = totalChickens - male - female; // 小鸡数量
int moneySpent = male * 5 + female * 3 + (chicks / 3); // 花费的总钱数
// 检查是否满足条件:钱数总和是否为100,且小鸡数量是3的倍数
if (moneySpent == totalMoney && chicks % 3 == 0) {
// 输出结果
System.out.println(male + "只公鸡," + female + "只母鸡," + chicks + "只小鸡");
}
}
}
}
}
代码一缺点:
不能控制数字的所占的位置
知识点:
定义变量
final int totalMoney = 100; // 总共有100块钱
final int totalChickens = 100; // 总共有100只鸡
代码(二):
public class Main{
public static void main(String[] args){
final int qian =100;
final int ji = 100;
for(int male=0;male<=qian/5;male++){
for(int fmale = 0;fmale<=qian/3;fmale++){
int chk =ji -male-fmale;
int huaqian = male * 5 +fmale *3 +chk / 3;
if(huaqian==qian && chk %3==0)
{
System.out.printf("公鸡%2d只,母鸡%2d只,小鸡%2d只",male,fmale,chk);
System.out.println();
}
}
}
}
}
代码二优点:
可以控制数字的所占位置
知识点:
System.out.printf("公鸡%2d只,母鸡%2d只,小鸡%2d只",male,fmale,chk);
控制所占位置
总结:
到这里,java第一次作业就写完了,以后要学习课程跟着走,不落后,从现在开始每两天一题打卡,继续学习java。
不要为了敲代码而敲,主要是学习,总结,进步,收获。