/**
第一题:从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒
*/
import java.util.Scanner;
public class Test1 {
public static void main(String[] args){
Scanner input=new Scanner(System.in); //键盘输入
System.out.println("请输入数字i:");
int i=input.nextInt(); //接收i
int s=i%60; //秒
int m=i/60%60; //分钟
int h=i/3600%60; //小时
int d=i/3600/24; //天
if (i>=86400){
System.out.println(d+"天"+h+"小时"+m+"分钟"+s+"秒");
}else if(i>=3600&&i<86400){
System.out.println(h+"小时"+m+"分钟"+s+"秒");
}else if (i>=60&&i<3600){
System.out.println(m+"分钟"+s+"秒");
}else if (i>=0&&i<60){
System.out.println(s+"秒");
}
}
}
/**
第二题:编写一个函数,函数内输出一个字符串,并在主函数内调用它。
*/
public class Test2{
public static void string()//调用主函数里的string方法
{
System.out.println("黑马程序员欢迎您!");
}
public static void main(String [] args){
string();
}
}
/**
第三题:为什么需要配置path,什么时候需要classpath?
答:
1、配置path是为了方便可以再任意一个路径下去执行所要执行的可执行文件。
2、如果没有配置path的话,那么每次执行exe文件时就都需要每次输入其所在的路径,但是如果我们配置了path则不需要再每次都输入其所在的目录。
3、当需要运行一个较复杂的类时,需要调用JAVA内部类,这时JAVA虚拟机就会到classpath指定的地方去寻找这些类。这时就需要配置classpath.
*/
/**
第四题:定义一个二维int数组,编写代码获取最小元素。
*/
class Test4{
public static void main(String args[]){
//自定义一个数组
int num[][] = {{75, 5, 23, 76 },{564, 45, 452, 511 },{ 55,99, 1,22, 33 },{213,546,23,}};
int Min=num[0][0];//定义一个最小值数组
//依次遍历比较
for (int a = 0; a < num.length; a++) {
for (int b = 0; b< num[a].length; b++) {
if(num[a][b]<Min)Min=num[a][b];//全局最小值
}
}
System.out.println("最小值:"+Min);//输出最小值
}
}
import java.util.ArrayList;
import java.util.List;
@SuppressWarnings("unchecked")
/**
第五题:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
*/
public class Test5{
public static void main(String[] args) {
//创建原始数组
int[] arr = { 4, 2, 4, 6, 1, 2, 4, 7, 8 };
//创建对象
List list = new ArrayList();
//增强for
for (int num : arr) {
if (!list.contains(num)) {
list.add(num);
}
}
//打印数组
System.out.println(list);
}
}
/**
第六题:写出以下代码执行结果,分析为什么?(没有分析结果不得分)
public class Test {
public static void main(String[] args) {
String s = "abc";
s.substring(1);
s.replace("bc", "xyz");
System.out.println(s);
String value = new String ("abc");
System.out.println(s == value);
}
}
*/
答:
结果是:
abc
false
分析:
第一个:System.out.println(s);
字符串是常量,一般是存放在字符串常量池中一旦初始化就不会再改变,s.substring(1)和s.replace("bc","xyz")并未改变s的值,所以输出的仍是abc.
第二个:System.out.println(s == value);
==比较的是字符串s和value的地址值,他们是两个不同的对象,在内存中的地址值是不同的,所以打
印结果是false.
/**
第七题:编写程序,打印1到100之内的整数,但数字中包含7的要跳过例如:17、27、71、72
*/
class Test7
{
public static void main(String[] args) {
遍历1-100所有的数
for(int i=1;i<=100;i++){
//索引所有包含7的数
if( (i+"").indexOf("7")==-1)
System.out.println(i);
}
}
}
/**
第八题:在打印语句中如何打印这3个x变量?
class A {
int x = 1;
class B {
int x = 2;
void func() {
int x = 3;
System.out.println( ? );
}
}
}
*/
第一种:
System.out.println(new A().x + "," + new B().x + "," + x);
第二种:
System.out.println( A.this.x );
System.out.println( B.this.x );
System.out.println( x );
/**
第九题:编写程序,该程序启动后用户可以按"yyy-MM-dd"的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。
*/
import java.io.*;
import java.text.*;
import java.util.Date;
public class Test9 {
public static void main(String[] args) throws NumberFormatException, IOException {
System.out.println("开始输入日期:");
int month = 0,day = 0;
long year = 0;
//从键盘读取数据,建立转换流
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = null;
StringBuffer sb = new StringBuffer();
while((s = bf.readLine())!=null){
//年数
year = Integer.valueOf(s.substring(0,4));
if(Integer.valueOf(s.substring(4,5)) == 0){
//月数
month = Integer.valueOf(s.substring(5,6));
}
else{
if(Integer.valueOf(s.substring(4,6)) <= 12)
month = Integer.valueOf(s.substring(4,6));
else
System.out.println("月份输入错误");
}
//当前月天数
if( Integer.valueOf(s.substring(6))<31)
{
day = Integer.valueOf(s.substring(6));
}
else{System.out.println("你输入的天数有错");}
//调用Day方法算出天数
System.out.println(year+"年"+month+"月"+day+"日");
System.out.println("第"+Day(year,month,day)+"天");
WeekDay(s);
}
}
public static void WeekDay(String day){
String[] str ={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
DateFormat df = new SimpleDateFormat("yyyyMMdd");//日期格式化辅助类
Date d = new Date();
try{
d = df.parse(day);//格式化日期
}catch(ParseException e){
e.printStackTrace();
}
for(int i=0;i<str.length;i++){
if(d.getDay()==(i)) //根据取出来的数判断取数组下标
{
System.out.println(str[i]);
}
}
}
public static int Day(long year,int month,int day){
int dateSum1 = 0;
for (int i = 1; i < month; i++){
switch(i){
//当月份为1,3,5,7,8,,10,12时,自动加31天
case 1: case 3: case 5: case 7: case 8: case 10:
case 12:dateSum1 += 31; break;
//当月份为4,6,9,11时,自动加30天
case 4: case 6: case 9: case 11:dateSum1 += 30; break;
case 2:
// 判断是否为闰年,如果是加29,否加28
if(( (year % 4 == 0) & (year % 100 != 0)) | (year % 400 == 0)| dateSum1<30)
dateSum1 += 29;
else dateSum1 += 28;
}
}
return dateSum1+day;
}
}
/**
第十题:一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。
当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,
则不会发生这种问题。编程解决猫狗鱼过河问题。
*/
import java.util.ArrayList;
import java.util.List;
public class Test10 {
public static void main(String[] args) {
// 1:因为数据长度频繁的改变所以用集合来装数据。并且将河的两边比喻为两个不同的集合
// left :表示左边的河岸 right:表示右边的河岸也就是对岸。
List<String> left = new ArrayList<String>();
List<String> right = new ArrayList<String>();
// 2:因为一开始河的左岸就是有人和三个动物的,所以程序一加载就应该添加他们
left.add( "猫" );
left.add( "狗" );
left.add( "鱼" );
int useBoat = 0;
String animal = null;
while( !left.isEmpty() ){
useBoat++;
animal = null;
if( 1 == useBoat % 2 ){
for( int i = 0; i < left.size(); i++ ){
animal = left.remove( i );
if( lossAnimal(left) ){
left.add( animal );
continue;
}else{
break;
}
}
System.out.println( "第" + useBoat + "次, 老农用船将" + animal + "运到河右岸" );
right.add( animal );
}else {
while( lossAnimal(right) ){
for( int i = 0; i < right.size(); i++ ){
animal = right.remove( i );
if( lossAnimal(right) ){
right.add( animal );
continue;
}else{
break;
}
}
}
if( animal == null ){
System.out.println( "第" + useBoat + "次, 老农用船回到河左岸" );
}else{
System.out.println( "第" + useBoat + "次, 老农用船将" + animal + "运回河左岸" );
left.add( animal );
}
}
}
}
public static boolean lossAnimal( List<String> list ){
if( list.contains("猫") && list.contains("狗") ){
return true;
}else if( list.contains("猫") && list.contains("鱼") ){
return true;
}else{
return false;
}
}
}