42.【Java 基础之数组】(二)

简介: 42.【Java 基础之数组】

(六)、经典用法:

1.猜数字游戏

需要的第一个包: 随机数包

import java.util.Random;    //导入包
Randon r=new Random();      //声明包
int number=r.nextInt(100)  //范围是 0~99  使用包
代码展示:
import java.util.Scanner;   //导输入包
import java.util.Random;    //导随机数包
public class one
{
  public static void main(String []avgs)
  {
    Scanner sc=new Scanner(System.in);
    Random r=new Random();     //
    int Number;
    Number=r.nextInt(100)+101;   //  100-200
    System.out.println("系统给定的随机数是:");
    System.out.println(Number);
    int i,j=0;
    while(true)
    {
      System.out.println("请您再输入一个数字\n");
      i=sc.nextInt();
      j++;
      if(i>Number)
      {
        System.out.println("您猜的数字大了\n");
      }
      else if(i<Number)
      {
        System.out.println("你猜的数字小了\n");
      }
      else
        break;
    }
    System.out.println("您一共用了"+(j)+"次机会赢得了游戏");
  }
}
效果展示:

2.回文数:

基本思路:回文数有一个特点,那么就是首尾堆成,比如说12321 是一个回文数,1232 这不是一个回文数.根据这个特点,我们可以知道把个位、十位…反过来也是等于原来的数字的,所以我们可以知道基本操作 :

gw =x%10; x=x/10,然后用sum进行颠覆运算.

代码展示:
import java.util.Scanner;   //导输入包
public class one
{
  public static void main(String []avgs)
  {
    System.out .println("请您输入一个三位数以上的数字:\n");
    Scanner sc=new Scanner(System.in );
    int number=sc.nextInt();
    int sum=0,temp=number;
    while(number!=0)
    {
      int gw=number%10;
      number=number/10;
      sum=sum*10+gw;
    }
    System.out.println(temp);
    System.out.println(sum);
      System.out.println(temp==sum);
      //System.out.println("不是一个回文数\n"+sum);    
  }
}

3.求被除数和除数的商和余数

题目描述:假如我们给您两个数据一个被除数一个是除数。要求我们不能用 / % 求取这两个数的商和余数;

基本思路:首先我们要知道一个知识,那就是:被除数1-除数=被除数2 … 被除数2-除数=被除数3…被除数n-除数=余数然后他们计算的次数就是我们要的商

代码展示:
package one;
import java.util.Scanner;
public class on {
public static void main(String []avgs) {
    System.out.println("请您输入被除数和除数分别为:");
    Scanner  sc=new Scanner(System.in);
    int bnumber,number,count=0;
    bnumber=sc.nextInt();
    number=sc.nextInt();
    while(bnumber>=number)     //假如说被除数大于除数就进入循环体,否则推出
    {
      bnumber-=number; 
      count++;         //计算商的
    }
    System.out.println("商为:"+count);
    System.out.print("余数为:"+bnumber);
  }
}
效果展示:

4.数组求最大值:

题目描述:

我们已经知道了一个数组 的数,然后求最大值:

代码展示:
package test;  //  包名
import java.util.Scanner;
public class test1 {     //项目名
  public static void main(String []avgs)
  {
    int arr[]=new  int[] {22,35,87,26,20};
    int max;
    max=arr[0];
    for(int i=0;i<arr.length;i++)
    {
      if(arr[i]>max)
      {
         max=arr[i];
      }
    }
    System.out.print("最大值为:"+max);
    }
}
效果展示:

5.数组中的数据交换

题目描述:已知数组arr的数字,让他们进行首尾交换,比如说 12345 ,交换后为:54321.

刨析: 定义两个整形变量,i,j ; 循环条件是 i <arr.length ; 自增自减

for(int i=0,j=arr.length-1;i<arr.length/2;i++,j--)
代码展示:
package test;  //  包名
public class test1 {     //项目名
  public static void main(String []avgs)
  {
    int arr[]=new  int[] {22,35,87,26,20};
    for(int i=0,j=arr.length-1;i<arr.length/2;i++,j--)
    {
      int temp;
      temp=arr[i];
      arr[i]=arr[j];
      arr[j]=temp;
    }
    System.out.println("交换后的数据为:");
    for(int i=0;i<arr.length;i++)
    {
      System.out.println(arr[i]);
    }
      }   
}
效果展示:

7.数组堆内存和栈内存:

1)、栈内存的概念:

栈由操作系统自动分配释放 ,用于存放函数的参数值、局部变量等,其操作方式类似于数据结构中的栈。

eg:

package test
public class one{
public static void main(String []avgs)
{
int a;  //栈
int b=3;   //栈
char*p;  //栈
}
}

其中函数中定义的局部变量按照先后定义的顺序依次压入栈中,也就是说相邻变量的地址之间不会存在其它变量栈的内存地址生长方向与堆相反,由高到底,所以后定义的变量地址低于先定义的变量,比如上面代码中变量 s 的地址小于变量 b 的地址,p2 地址小于 s 的地址。栈中存储的数据的生命周期随着函数的执行完成而结束。(先进先出)

2)、图解

3)、堆内存

堆内存的定义:如果有关键字 new 加持的,那么就放在堆区,比如果 数组

复习一下三种结构请点我

相关文章
|
2月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
33 4
|
2月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
40 2
|
2月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
93 2
|
2月前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
53 9
|
2月前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
26 3
|
2月前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
30 6
|
2月前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
34 1
|
2月前
|
存储 XML Java
如何在 Java 中将常见文档转换为 PNG 图像数组
如何在 Java 中将常见文档转换为 PNG 图像数组
18 1
|
2月前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
122 9
|
3月前
|
存储 Java 数据处理
Java 数组的高级用法
在 Java 中,数组不仅可以存储同类型的数据,还支持多种高级用法,如多维数组(常用于矩阵)、动态创建数组、克隆数组、使用 `java.util.Arrays` 进行排序和搜索、与集合相互转换、增强 for 循环遍历、匿名数组传递以及利用 `Arrays.equals()` 比较数组内容。这些技巧能提升代码的灵活性和可读性,适用于更复杂的数据处理场景。
42 10