01 JAVA入门
import java.util.Scanner;
//输入引入头文件,都要注意大小写
import java.text.DecimalFormat;
//DecimalFormat 类位于 java.text 包中,它提供了格式化和解析数字的功能。
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//1 字符串需要用a.charAt(0);
String a = sc.next(); // 读取用户输入的第一个字符串
char c = (char) (a.charAt(0) - 'a' + 'A'); // 将小写字母转换为大写
//2 输出控制
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(s) + " " + df.format(v));
//2.2另一种输出控制
System.out.printf("%.2f",s);
//2.3使用String控制输出
System.out.println(String.format("%.3f", v));
//3多组输入
while (scanner.hasNextInt()) {
// while (scanf("%d %d", &a, &b) != EOF)
//检查下一行是否还有输入,java里没有eof{后关闭输入
sc.close();
}
}
02控制语句
(1)引用对象要自己初始化
class Hotel {
int price;
int com;
}
int n = sc.nextInt();
for (int i = 1; i <= n; i++) {
if (h[i] == null) {
h[i] = new Hotel();
}
/*Hotel[] h = new Hotel[5010]; 只是创建了一个 Hotel 类型的数组,
但数组中的每个元素初始值都是 null,并没有创建 Hotel 对象。
为了在访问数组元素的属性之前确保每个元素都有一个 Hotel 对象,
你需要使用 if (h[i] == null) { h[i] = new Hotel(); }
来检查并实例化 Hotel 对象。这样才能安全地设置和访问 price 和 com 等属性
因为数组元素是对象引用,初始时这些引用是 null,所以需要检查和实例化对象。
*/
//但是 int [] a=new int[n],int型有默认值为0
h[i].price = sc.nextInt();
h[i].com = sc.nextInt();
}
03数组应用
import java.util.Arrays;
import java.util.Scanner;
import java.math.BigDecimal;
//高精度引入
public class Main{
public static void main(String[] args) {
// 1 数学函数PI,pow,sqrt,ans
//Math.round()——特殊四舍五入取整,Math.ceil()向上取整,Math.floor向下取整
double v = (4.0 / 3.0) * Math.PI * Math.pow(r, 3);
doubel ans=Math.abs(n1-n2);
// 2 输入:
String s1=sc.nextLine();//读入一行包括空格
String s2=sc.Next();//读入字符串不读入空格
System.out.printf("%-4d",a[i][i1]);//%-4d左对齐
// 3 字符串
s.charAt(0),s.length();
Character.isLetter(c) || Character.isDigit(c)//判断字母数字
s.length();
//而数组长度 arr.length没有括号
// 4 高精度
BigDecimal a, b;
a = sc.nextBigDecimal();
b = sc.nextBigDecimal();
System.out.println(a.add(b));
System.out.println(a.multiply(b));
// 5 套用循环记得重置变量(解方程鸡兔同笼枚举)
// 6 gcd函数
public static int __gcd(int a, int b) {
while (b != 0)
{ int t = b;
b = a % b;
a = t;
}
// 7 数组排序
Arrays.sort(arr, fromIndex, toIndex);
Arrays.sort(arr);
// 8 冒泡排序
// 冒泡排序
for (int i = 0; i < n - 1; i++) { // 注意循环范围
for (int j = 0; j < n - 1 - i; j++) {
if (a[j] > a[j + 1]) {
// 交换
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
ans++;
}
}
}
//自定义类需要手动初始化
class hotel{
int price;
int com;
}
hotel [] h=new hotel[5010];
if (h[i] == null) {
h[i] = new hotel();
//不然会空指针异常
}
h[i].price = sc.nextInt();
h[i].com = sc.nextInt();
// 9 三目运算符控制空格输出
System.out.print((i!=1)?(a[i]+" "):a[i]);
}
}
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m=sc.nextInt(); //歌曲总数
char songs[] = new char[m];
char temp;
int i,j; //循环控制变量
for(i=0;i<m;i++)
{
songs[i]=(char)('A'+i);
}
int n = sc.nextInt(); //操作的次数
int action;
for (i = 1; i <= n; i++) {
action = sc.nextInt(); // 1 2 3
switch (action) {
case 1:
temp = songs[0]; //缓冲区中暂时保留第1首歌
for(j=0;j<m-1;j++) //每一首歌曲顺序前移
{
songs[j]=songs[j+1];
}
songs[j] = temp; //songs[n-1]赋值为:原来第1首歌
break;
case 2:
temp = songs[m-1]; //缓冲区中暂时保留最后1首歌
for(j=m-1;j>0;j--) //每一首歌曲顺序后移
{
songs[j]=songs[j-1];
}
songs[j] = temp; //songs[0]赋值为:原来最后1首歌
break;
case 3: //歌曲数组第0首、第1首交换
temp = songs[0];
songs[0] = songs[1];
songs[1] = temp;
break;
}
}
for(i=0;i<m-1;i++)
{
System.out.print(songs[i]+","); //前n-1首歌名,每次加逗号
}
System.out.println(songs[i]); //最后一首输出歌名后加回车
}
}