您的位置:首页 > 编程语言 > Java开发

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完整写代码问题比较多
我遇到的问题:

  1. 说是最多10个数据,所以
    while(scan.hasNext())
    我写成
    for(int i=0;i<10;i++)
    但测试总是说越界。
  2. 记住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.

  1. import java.util.*;
    包含所以util类库,不是utils.
  2. 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.

  • 点赞
  • 收藏
  • 分享
  • 文章举报
紫柳 发布了4 篇原创文章 · 获赞 1 · 访问量 185 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: