1.声明一个char类型的数组,  从键盘录入6个字符
【1】遍历输出
【2】排序
【3】把char数组转化成一个逆序的数组

总结:分析问题时,先问自己,需要用到什么?

对于这题,第一步:先写一个main方法;

第二步:需要声明一个数组;

第三步:需要用到Scanner的控制台输入;(列如:String tmp=sc.next();定义一个string类型的tmp(我把它理解成堆内存的地址),把从控制台输入的sc对象依次导入到堆内存当中)

这三步我把它理解成构建算法的基石

(1)在第一问当中,当看到问题是遍历输出时,需要立马想到这题我需要用到for循环;

因为定义的是String类型的数组,所以需要用到.charAt(0);

                                                                     【1】遍历输出

 import java.util.Scanner;
public class Test13{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
char[] arr=new char[6]; for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个字母");
String tmp=sc.next();
arr[i]=tmp.charAt(0);
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}

                                                                                               【2】排序

当看到排序时,首先想到冒泡算法,在本题中冒泡算法的使用是:两个for循环的嵌套使用,第一个for循环,控制行;第二个for循环,用于两两比较;

我对他的使用方法的理解是:第一个for循环的范围是(arr.length-1);第二个for循环的范围是(arr.length-1-i);

冒泡排序又是升序,所以需要使用 if 的判断语句,

char temp=0;
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println();
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}

                                                                                           【3】把char数组转化成一个逆序的数组

降序输出,

System.out.println();
for(int h=arr.length-1;h>=0;h--){
System.out.print(arr[h]+"\t");
}

2.从键盘输入5句话,将这五句话逆序输出(不需要排序)
运行效果

======================================
大家早上好
明天会更好
北京欢迎你
长城长
太阳出来了

逆序输出
===========================================
太阳出来了
长城长
北京欢迎你
明天会更好
大家早上好

import java.util.Scanner;
public class Test14{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String[] arr=new String[5];
for(int i=0;i<arr.length;i++){
System.out.print("请输入第"+(i+1)+"句话");
arr[i]=sc.next();
}
for(int j=arr.length-1;j>=0;j--){
System.out.println(arr[j]);
}
}
}

3.有一组数分别为18,25,7,36,13,2,89,63求出最小的值,并将最小的数与最小的数所在的下标输出

//运行效果:
//====================================
//最低积分为:2
//最低积分所在的下标为:5

总结:第一步,看到问题首先需要想到,需要列出这个数组    int[] arr={18,25,7,36,13,2,89,63};

第二步:   找最小值需要用到if的表达式,首先需要赋予数组的一个数值为最小值,然后用这个最小值与数组的每一个元素一 一比较,(需要你在for循环前,对最小值和最小值的索引进行赋值)

public class Test14{
public static void main(String[] args){
int[] arr={18,25,7,36,13,2,89,63};
int min=arr[0];
int a=0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]<min){
min=arr[i];
a=i;
}
}
System.out.println("最低积分为:"+min);
System.out.println("最低积分所在的下标为:"+a);
}
}

Java 数组算法列题解析的更多相关文章

  1. JAVA经典算法40题及解答

    JAVA经典算法40题 [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分 ...

  2. JAVA经典算法40题

    1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...

  3. JAVA经典算法40题(原题+分析)之分析

    JAVA经典算法40题(下) [程序1]   有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   1.程序分析:  ...

  4. JAVA经典算法50题(转)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51097928 JAVA经典算法50题 [程序1]   题目:古典问题:有一对兔子, ...

  5. JAVA经典算法40题面向过程

    JAVA经典算法40题 [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分 ...

  6. JAVA经典算法40题(原题+分析)之原题

    JAVA经典算法40题(上) [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? [程 ...

  7. java经典算法40题-附带解决代码

    前一段时间工作比较闲,每天没有代码敲的日子有点无聊,于是为了保证自己的编程逻辑力的日常清醒,故百度了一些经典的java算法,然后自己思考编程解决问题,虽然那些东西比较基础了,但是有些题目小编看到了也是 ...

  8. JAVA 数组算法(复制、查找、插入)

    一.复制数组算法 //数组复制算法 public class Test{ public static void main(String[] args){ int[] arrA = {100,800,5 ...

  9. JAVA经典算法40题(供面试所用)

    [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:   兔子的规律为数 ...

随机推荐

  1. [GO]json解析到结构体

    package main import ( "encoding/json" "fmt" ) type IT struct { Company string `j ...

  2. 安卓利用Handlers,AsyncTask和Loaders运行后台程序

    安卓的用户界面线程(user interface thread) 1.1 主线程 安卓修改用户界面并从一个单一用户界面线程中处理输入事件,这个线程也被称作主线程(main thread) Androi ...

  3. chattr命令锁定账户敏感文件

    有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux ...

  4. java利用HttpClient进行https接口调用

    1.为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程. import java.security.cert.CertificateException; import ...

  5. Atcoder 2566 3N Numbers(优先队列优化DP)

    問題文N を 1 以上の整数とします. 長さ 3N の数列 a=(a1,a2,…,a3N) があります. すぬけ君は.a からちょうど N 個の要素を取り除き.残った 2N 個の要素を元の順序で並べ. ...

  6. webstorm的debug模式

    F7 在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则进入当前方法体内, 如果该方法体还有方法,则不会进入该内嵌的方法中 * F8 在 Debug 模式下,进入下一步,如果当前行断点是 ...

  7. linux 文件系统基本结构

    1.Linux文件系统为一个倒转的单根树状结构 2.文件系统的根为"/" 3.文件系统严格区分大小写 4.路径使用"/",与Windows使用"\&q ...

  8. hyper-v开发包之ddtkh

    ddtkh是微软开源社区的项目,实质是.net对象封装的一系列powershell命令,在结构上更直观更易用.它集成scvmm虚拟机管理.scom虚拟机资源监控和DPM数据保护等几种功能包.

  9. Entity Framework 高性能 泛型缓存+动态Lambda

    前言:自学CSharp挺长时间的了,这是我第一编博客,跟大家分享一下.如有不足地方请多多包涵,也欢迎大家提出更好的意见,下面开始进入正题. 一.泛型缓存 1.概念:1.泛型(泛型也是一种推断类型,从而 ...

  10. SprngBoot对静态资源的映射

    $.对前端js类库和框架的引用 使用webjars打包成jar的形式进行引用 webjars地址:https://www.webjars.org/; 选择使用版本-- >   选择管理方式--& ...