栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

算法第一题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法第一题

要开始练算法啦

今天是第一个

给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,
并用字符串数组 answer(下标从 1 开始)返回结果,其中:

answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。
answer[i] == "Fizz" 如果 i 是 3 的倍数。
answer[i] == "Buzz" 如果 i 是 5 的倍数。
answer[i] == i 如果上述条件全不满足。
开始写的代码
package src;

import java.util.Scanner;

public class diyiti {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数值 n:");
        String n = sc.next();
        int[] answer = new int[Integer.parseInt(n)];
        for (int i = 1;i <= answer.length;i++) {
            if (i%5 != 0 & 1%3 == 0) {
                System.out.println("Fizz");
            } else if (i%3 != 0 & i%5 == 0) {
                System.out.println("Buzz");
            } else if (i%3 == 0 & i%5 == 0) {
                System.out.println("FizzBuzz");
            } else
                System.out.println(i);
        }
    }
}

能跑,但是存在一些小问题,比如说 if (i%5 != 0 & 1%3 == 0)中“i”写成了1,int[] answer = new int[Integer.parseInt(n)];多余,然后使用的是逻辑与。代码不够优化等。

修改优化过后的代码
package src;

import java.util.Scanner;

public class diyiti02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数值 n:");
        int n = sc.nextInt();
        String[] answer = new String[n];
        for (int i = 1;i <= answer.length;i++) {
            if (i%3 == 0 & i%5 == 0) {
                answer[i - 1] ="FizzBuzz";
            }else if (1%3 == 0) {
                answer[i - 1] ="Fizz";
            } else if (i%5 == 0) {
                answer[i - 1] ="Buzz";
            } else
                answer[i - 1] ="" + i;
        }
        for (String temp:answer) {
            System.out.println(temp);
        }
    }
}
补充:

1.&与&&

& 称为逻辑与,只有两个操作数都是true,结果才是true。
&& 称为简洁与或者短路与,也是只有两个操作数都是true,结果才是true。但是如果左边操作数为false,就不计算右边的表达式,直接得出false。类似于短路了右边。

2.Scanner
Scanner类是java中内部已经封装好的输入类,也就是通过键盘向程序输入数据。

3.Scanner类所具有的特定的方法(部分)
next() 这个是读入下一行的内容,读取的是字符串
nextlnt() 只读取int值
nextLine() 这个是读入下一行的内容,读取的是字符串
nextDouble() 读取下一个Double型

注:next()和nextLine()的区别
(1).next():只读取输入直到空格。它不能读两个由空格或符号隔开的单词。此外,next()在读取输入后将光标放在同一行中。
(2).nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号(即。它读到行尾)。读取输入后,nextLine()将光标定位在下一行。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号