Java 如何连续输入三个整数
时间: 2024-02-21 18:57:58 浏览: 16
你可以使用 java.util.Scanner 类来读取控制台输入。以下是连续输入三个整数的示例代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入三个整数,以空格分隔:");
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
System.out.println("您输入的三个整数分别是:" + a + "、" + b + "、" + c);
}
}
```
在上面的代码中,我们首先创建了一个 Scanner 对象,然后调用 `nextInt()` 方法来读取控制台输入的整数。程序会等待用户依次输入三个整数,每个整数之间用空格分隔。最后,程序会将三个整数打印出来。
相关问题
给你一个整数数组nums,要求该数组中所有为等差数组的子数组个数(等差数组子数组,指的是至少3个数的连续数组成等差数列)输入格式:一个整数数组 输出格式:一个非负整数,表示等差子数组的个数 用java实现这道算法题
思路:遍历数组,以每个位置的数为等差数列的中间数,向两边扩展,查看是否存在等差数列。
具体做法:
1.初始化结果res为0;
2.遍历数组,以每个位置的数为等差数列的中间数,向两边扩展;
3.扩展时,记录前一个数、当前数和差值,并判断是否构成等差数列,若是则res加1,当前位置向右移动一位继续扩展;
4.当无法构成等差数列时,当前位置向右移动一位继续扩展;
5.重复2~4,直到遍历完整个数组。
Java代码实现:
```java
public class Solution {
public int arithmeticSlices(int[] nums) {
int n = nums.length;
if(n < 3) return 0;
int res = 0;
for(int i = 1; i < n - 1; i++) {
int pre = i - 1;
int cur = i;
int diff = nums[cur] - nums[pre];
while(cur + 1 < n && nums[cur + 1] - nums[cur] == diff) {
res++;
cur++;
}
cur = i;
while(pre >= 0 && cur + 1 < n && nums[cur + 1] - nums[cur] == nums[cur] - nums[pre]) {
res++;
pre--;
cur++;
}
}
return res;
}
}
```
给定一个长度为n的01串,定义“连续段"为极长注续的相同字符的数量,例如001110000'有一个长度为2的0连续段,长度为3的1连续段,长度为4的0的连续段。 已知每次操作可以把一个0变成1或者把1变成0。 现在请你用最少的操作欢数,使得所有0连续段的长度都是a的倍数,1连续段的长度都是b的倍数。 输入描述:第一行输人三个正整数n, a, b 第二行输入一个长度为n的,仅有字符0和1构成的字符串,其中1<= n, a, b,<=20000. 输出描述:使得字符串合法的最小操作次数,特殊的,如果无论如何字符串都不能合法,输出-1. 示例:输入 8 2 3 10111000 输出:2. 用java给出代码
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a = sc.nextInt();
int b = sc.nextInt();
String s = sc.next();
int cnt0 = 0; // 0连续段的长度纪录器
int cnt1 = 0; // 1连续段的长度纪录器
int ans = 0; // 操作次数
int len = 0; // 连续段长度
int flag0 = -1; // 标记下一个要匹配的0连续段的起始位置,初值设为-1
int flag1 = -1; // 标记下一个要匹配的1连续段的起始位置,初值设为-1
if(n % (a+b) != 0) { // 特判:字符串长度 不是 a + b 的倍数
System.out.println(-1);
return;
}
for(int i = 0; i < n; i++) {
if(s.charAt(i) == '0') {
if(flag0 == -1) flag0 = i; // 标记0连续段的起始位置
cnt0++;
if(cnt1 > 0 && cnt1 % b == 0) { // 1连续段长度为 b 的倍数
len = cnt1;
while(cnt0 >= a && len > 0) { // 0连续段长度为 a 的倍数
ans += 2;
cnt0 -= a;
len -= b;
}
if(len != 0) { // 无法匹配,输出-1
System.out.println(-1);
return;
} else { // 匹配成功,重置标记
flag1 = -1;
cnt1 = 0;
}
}
} else {
if(flag1 == -1) flag1 = i; // 标记1连续段的起始位置
cnt1++;
if(cnt0 > 0 && cnt0 % a == 0) { // 0连续段长度为 a 的倍数
len = cnt0;
while(cnt1 >= b && len > 0) { // 1连续段长度为 b 的倍数
ans += 2;
cnt1 -= b;
len -= a;
}
if(len != 0) { // 无法匹配,输出-1
System.out.println(-1);
return;
} else { // 匹配成功,重置标记
flag0 = 1;
cnt0 = 0;
}
}
}
}
System.out.println(ans);
}
}