1.java笔记之汽水瓶问题(华为)
2020-04-23 11:27
645 查看
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
输入描述:
输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。
输出描述:
对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
示例1
输入
3
10
81
0
输出
1
5
40
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner scan=new Scanner(System.in); while(scan.hasNext()){ int count=0; int sc=scan.nextInt(); if(sc==0)break; do{ count+=sc/3; sc=sc/3+sc%3; }while(sc>2); if(sc==2)count++; System.out.println(count); } } }
第一次用java完整写代码问题比较多
我遇到的问题:
- 说是最多10个数据,所以
while(scan.hasNext())
我写成for(int i=0;i<10;i++)
但测试总是说越界。 - 记住java键盘输入的三种方法System.in,InputStreamReader+BufferedReader和Scanner类中方法。
import java.io.BufferedReader; //注意前面两个是io import java.io.InputStreamReader; import java.util.Scanner; /** * System.in方法 * 缺点一: 该方法能获取从键盘输入的字符,但只能针对一个字符的获取 * 缺点二: 获取的只是char类型的。如果想获得int,float等类型的输入,比较麻烦。 */ public static void CharTest(){ System.out.print("Enter a Char:"); char i = (char)System.in.read(); System.out.println("Yout Enter Char is:" + i); } /** * InputStreamReader+BufferedReader方法 * 优点: 可以获取键盘输入的字符串 * 缺点: 如何要获取的是int,float等类型的仍然需要转换 */ public static void ReadTest(){ System.out.println("ReadTest, Please Enter Data:"); InputStreamReader is = new InputStreamReader(System.in); //new构造InputStreamReader对象 BufferedReader br = new BufferedReader(is); //拿构造的方法传到BufferedReader中 String name = br.readLine(); System.out.println("ReadTest Output:" + name); } /** * Scanner类中的方法 * 优点一: 可以获取键盘输入的字符串 * 优点二: 有现成的获取int,float等类型数据,非常强大,也非常方便; */ public static void ScannerTest(){ Scanner sc = new Scanner(System.in); String name = sc.nextLine(); //读取字符串型输入 int age = sc.nextInt(); //读取整型输入 float salary = sc.nextFloat(); //读取float型输入 }
链接: https://www.cnblogs.com/chenshaogang/p/8879047.html.
import java.util.*;
包含所以util类库,不是utils.- Scanner类中有个hasNext()方法判断输入(文件、字符串、键盘等输入流)是否还有下一个输入项,若有,返回true,反之false。
通过数学分析,最后获得的饮料数是总空瓶数整除2 。
#include<stdio.h> int main (){ int m; while(~scanf("%d",&m)&&m!=0) printf("%d\n",m/2); return 0; }
链接: https://www.nowcoder.com/questionTerminal/fe298c55694f4ed39e256170ff2c205f.
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Java Puzzlers笔记--puzzle 8: Dos Equis 选择操作符问题
- Java Puzzlers笔记--puzzle 9: Tweedledum +=的问题
- Java笔记(二十八)……IO流下 IO包中其他常用类以及编码表问题
- Java Puzzlers笔记--puzzle 7: Swap Meat ^符号问题
- java笔记:关于复杂数据存储的问题--基础篇:数组以及浅拷贝与深拷贝的问题(下)
- Java笔记(十二)……类中各部分加载顺序及存放位置问题
- java web 学习笔记 编码问题总结
- Java Puzzlers笔记--puzzle 13: Animal Farm 优先级以及对象引用问题
- Java笔记之语言基础_使用if语句时要注意的问题
- java笔记:熟练掌握线程技术---基础篇之线程的协作和死锁的问题(下)
- java学习笔记之链表(约瑟夫问题)
- JAVA学习笔记_关于异常机制处理问题
- JAVA学习笔记(1)_____模拟线程通信之生产者消费者问题
- Java学习笔记--解决一个类实现多个接口的问题
- JAVA学习笔记(一)Vector类中set方法的使用问题
- Java Puzzlers笔记--puzzle 14: Escape Rout (")双引号的问题
- Java 线程同步问题 生产者-消费者 算法实现 -Java学习笔记(29)
- JNI学习笔记5——本地方法处理java数组/引用问题/缓存jfieldID/jmethodID
- 笔记有关Java的一些问题
- java学习笔记---第一个applet程序以及一个小问题的解决