团体程序设计天梯赛-练习集——L1-041 寻找250 (Java中while判断)

对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。

输入格式:
输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。

输出格式:
在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。

输入样例:

888 666 123 -233 250 13 250 -222

输出样例:

5

cpp的很快就做出来了

#include<iostream>
using namespace std;

int main(){
	int x = 0;
	while(1){
		x++;
		int N = 0;
		cin>>N;
		if(N == 250){
			cout<<x<<endl;
			break;
		}
	}
	return 0;
}

照着cpp的样子写了Java的:

import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		int x = 0;
		while(1){
			x++;
			Scanner sc = new Scanner(System.in);
			int N = sc.nextInt();
			if(N == 250){
				System.out.println(x);
				break;
			}
		}
	}
}

报错:

Main.java:6: error: incompatible types: int cannot be converted to boolean
while(1){
^ 1 error

搜了搜
java里while(1)应该是非法的,因为java强制要求while()里面的条件表达式必须是boolean型,而不能是int。
C/C++里用while(1)是可以的,和while(true)等价。

改成while(true),还是不行。样例的测试用例输出了空行。
拿IDEA自己试了下,如果几个输入数字之间是空格输入的话,返回不了值;如果几个输入数字之间是回车的话,可以输出想要的值。

度了一下,看的这位老哥写的L1-041 寻找250 java语言

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {

		int count = 0;
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		String str1[] = str.split(" ");
		while (true) {
			if (str1[count].equals("250")) {
				System.out.println(++count);
				break;
			}
			count++;
		}
	}
}

继续往下学Java了,水平还是不大行。


版权声明:本文为li_yizhixiaowukong原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。