Java 如何在读取令牌时结束streamtokenizer循环?
我知道“while((str.nextToken()!=str.TT_EOL))是一个无限循环,但我想知道如何以类似于StringTokenizer中的“while(st.hasMoreTokens())”的方式结束这个循环,它只需要读取20个令牌,这是我的代码: 非常感谢您的帮助:Java 如何在读取令牌时结束streamtokenizer循环?,java,iostream,inputstream,Java,Iostream,Inputstream,我知道“while((str.nextToken()!=str.TT_EOL))是一个无限循环,但我想知道如何以类似于StringTokenizer中的“while(st.hasMoreTokens())”的方式结束这个循环,它只需要读取20个令牌,这是我的代码: 非常感谢您的帮助: import java.io.*; import java.util.Arrays; public class StonePile { public static void ma
import java.io.*;
import java.util.Arrays;
public class StonePile {
public static void main(String args[]) throws IOException {
StreamTokenizer str = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
//int diff = 0;
str.nextToken();
int[] array = new int[(int) str.nval + 1];
int array2[] = new int[array.length - 1];
//System.out.println(array.length);
int i = 0;
int diff = 0;
while (((str.nextToken() != str.TT_EOL))) {
if (str.ttype == StreamTokenizer.TT_NUMBER) {
System.out.println(i);
array[i++] = (int) str.nval;
}
// if (i > 4) {
// break;
// }
}
for (int j = 0; j < array.length - 2; j++) {
diff = Math.abs(array[j + 1] - array[j]);
array2[j] = diff;
// System.out.println("El array es en" + j+" es"+ array2[j]);
}
Arrays.sort(array2);
System.out.println(array2[1]);
}
}
import java.io.*;
导入java.util.array;
公共级石堆{
公共静态void main(字符串args[])引发IOException{
StreamTokenizer str=新的StreamTokenizer(新的BufferedReader(新的InputStreamReader(System.in));
//int-diff=0;
str.nextToken();
int[]数组=新的int[(int)str.nval+1];
int-array2[]=新的int[array.length-1];
//System.out.println(数组.长度);
int i=0;
int-diff=0;
而(((str.nextToken()!=str.TT_EOL))){
if(str.ttype==StreamTokenizer.TT\u编号){
系统输出打印LN(i);
数组[i++]=(int)str.nval;
}
//如果(i>4){
//中断;
// }
}
对于(int j=0;j
如果您想要前20个任意代币,请使用:
for (int k = 0; k < 20 && str.nextToken() != str.TT_EOL; k++) {
if (str.ttype == StreamTokenizer.TT_NUMBER) {
System.out.println(i);
array[i++] = (int) str.nval;
}
}
for(int k=0;k<20&&str.nextToken()!=str.TT\u EOL;k++){
if(str.ttype==StreamTokenizer.TT\u编号){
系统输出打印LN(i);
数组[i++]=(int)str.nval;
}
}
如果您想要前20个TT_编号,请使用:
int k = 0;
while (k < 20 && str.nextToken() != str.TT_EOL) {
if (str.ttype == StreamTokenizer.TT_NUMBER) {
System.out.println(i);
array[i++] = (int) str.nval;
k++;
}
}
intk=0;
而(k<20和&str.nextToken()!=str.TT\u EOL){
if(str.ttype==StreamTokenizer.TT\u编号){
系统输出打印LN(i);
数组[i++]=(int)str.nval;
k++;
}
}
您只需要读取20个令牌或20个TT_编号?可以是1到20个令牌