求大神帮忙改下JAVA 程序,前半部分能运行,然后到后面就运行不了了
importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReade...
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Abb {
private static final Scanner SCANNER = new Scanner(System.in);
private static final int[] ArrayList = null;
public static void main(String[] args) {
List <String>list = new ArrayList<String>();
System.out.println("---输入 ok结束并显示添加的数据---");
System.out.println("--------------------------------");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("请输入要添加的数据:");//向数据库导入数据
String line = bf.readLine();
while(line!=null){
System.out.print("请输入要添加的数据:");
list.add(line);
line = bf.readLine();
if(line.equals("ok"))//输入ok结束导入数据
{
break;
}
}
bf.close();
} catch (IOException e) {
e.printStackTrace();
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+" ");
}
int a[]=ArrayList;//先向数据库导入数据
System.out.println("\n--------------------------------");
System.out.println("\n输入所要查找数字:");
int p= SCANNER.nextInt();//输入任意整数 例如:-1,0,100等。
int search=p;
int lower=0;
int temp=ArrayList.length-1;//出错的部分
int index=-1;
while(lower<=temp){
index = (lower+temp)/2;
int Value=a[index];
if(Value==search){
break;
}else if(Value<search){
lower=index+1;
}else{
temp = index-1;
}
}
if(lower<=temp){
System.out.println(search+"在上列数中第"+(index+1)+"位");
}else{
System.out.println("数据苦力里面没有元素请添加信息 "+search);
}
}
} 展开
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Abb {
private static final Scanner SCANNER = new Scanner(System.in);
private static final int[] ArrayList = null;
public static void main(String[] args) {
List <String>list = new ArrayList<String>();
System.out.println("---输入 ok结束并显示添加的数据---");
System.out.println("--------------------------------");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("请输入要添加的数据:");//向数据库导入数据
String line = bf.readLine();
while(line!=null){
System.out.print("请输入要添加的数据:");
list.add(line);
line = bf.readLine();
if(line.equals("ok"))//输入ok结束导入数据
{
break;
}
}
bf.close();
} catch (IOException e) {
e.printStackTrace();
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+" ");
}
int a[]=ArrayList;//先向数据库导入数据
System.out.println("\n--------------------------------");
System.out.println("\n输入所要查找数字:");
int p= SCANNER.nextInt();//输入任意整数 例如:-1,0,100等。
int search=p;
int lower=0;
int temp=ArrayList.length-1;//出错的部分
int index=-1;
while(lower<=temp){
index = (lower+temp)/2;
int Value=a[index];
if(Value==search){
break;
}else if(Value<search){
lower=index+1;
}else{
temp = index-1;
}
}
if(lower<=temp){
System.out.println(search+"在上列数中第"+(index+1)+"位");
}else{
System.out.println("数据苦力里面没有元素请添加信息 "+search);
}
}
} 展开
展开全部
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
System.out.println("---输入 ok结束并显示添加的数据---");
System.out.println("--------------------------------");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("请输入要添加的数据:");// 向数据库导入数据
String line = bf.readLine();
while (line != null) {
System.out.print("请输入要添加的数据:");
list.add(line);
line = bf.readLine();
if (line.equals("ok"))// 输入ok结束导入数据
{
break;
}
}
// bf.close();
} catch (IOException e) {
e.printStackTrace();
}
int size = list.size();
int a[] = new int[size];
for (int i = 0; i < size; i++) {
a[i] = Integer.valueOf(list.get(i));
System.out.print(list.get(i) + " ");
}
System.out.println("\n--------------------------------");
System.out.println("\n输入所要查找数字:");
int search = new Scanner(System.in).nextInt();// 输入任意整数 例如:-1,0,100等。
int lower = 0,index = -1;
while (lower <= size) {
index = (lower + size) / 2;
int Value = a[index];
if (Value == search) {
break;
} else if (Value < search) {
lower = index + 1;
} else {
size = index - 1;
}
}
if (lower <= size) {
System.out.println(search + "在上列数中第" + (index + 1) + "位");
} else {
System.out.println("数据苦力里面没有元素请添加信息 " + search);
}
}
bf.close(); 这句话不能写
因为
new BufferedReader(new InputStreamReader(System.in));
new Scanner(System.in)
底层的 StreamDecoder 是关联的同一个 reader
在执行InputStreamReader的read方法 ,而该InputStreamReader实际上就是System.in,而之前的close()方法已经将bf关闭了,此处再次实行read方法,则抛出IOException,然后层层捕获,最终抛出.NoSuchElementException
List<String> list = new ArrayList<String>();
System.out.println("---输入 ok结束并显示添加的数据---");
System.out.println("--------------------------------");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("请输入要添加的数据:");// 向数据库导入数据
String line = bf.readLine();
while (line != null) {
System.out.print("请输入要添加的数据:");
list.add(line);
line = bf.readLine();
if (line.equals("ok"))// 输入ok结束导入数据
{
break;
}
}
// bf.close();
} catch (IOException e) {
e.printStackTrace();
}
int size = list.size();
int a[] = new int[size];
for (int i = 0; i < size; i++) {
a[i] = Integer.valueOf(list.get(i));
System.out.print(list.get(i) + " ");
}
System.out.println("\n--------------------------------");
System.out.println("\n输入所要查找数字:");
int search = new Scanner(System.in).nextInt();// 输入任意整数 例如:-1,0,100等。
int lower = 0,index = -1;
while (lower <= size) {
index = (lower + size) / 2;
int Value = a[index];
if (Value == search) {
break;
} else if (Value < search) {
lower = index + 1;
} else {
size = index - 1;
}
}
if (lower <= size) {
System.out.println(search + "在上列数中第" + (index + 1) + "位");
} else {
System.out.println("数据苦力里面没有元素请添加信息 " + search);
}
}
bf.close(); 这句话不能写
因为
new BufferedReader(new InputStreamReader(System.in));
new Scanner(System.in)
底层的 StreamDecoder 是关联的同一个 reader
在执行InputStreamReader的read方法 ,而该InputStreamReader实际上就是System.in,而之前的close()方法已经将bf关闭了,此处再次实行read方法,则抛出IOException,然后层层捕获,最终抛出.NoSuchElementException
更多追问追答
追问
出错了
提示a[i] = Integer.valueOf(list.get(i));不能识别
追答
编译错误么? 你用的什么 VM ?
展开全部
package demo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Abb {
public static void main(String[] args) {
List <String>list = new ArrayList<String>();
System.out.println("---输入 ok结束并显示添加的数据---");
System.out.println("--------------------------------");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("请输入要添加的数据:");//向数据库导入数据
String line = bf.readLine();
while(line!=null){
System.out.print("请输入要添加的数据:");
list.add(line);
line = bf.readLine();
if(line.equals("ok"))//输入ok结束导入数据
{
break;
}
}
bf.close();
} catch (IOException e) {
e.printStackTrace();
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+" ");
}
System.out.println("len:"+list.size());
Integer a[]=new Integer[(int)list.size()];//先向数据库导入数据
for (int i=0;i<a.length;i++) {
System.out.println(list.get(i));
a[i]=Integer.parseInt(list.get(i));
}
System.out.println("\n--------------------------------");
Scanner sc = new Scanner(System.in);
System.out.println("\n输入所要查找数字:");
int p= sc.nextInt();//输入任意整数 例如:-1,0,100等。
int search=p;
int lower=0;
int temp=list.size()-1;//出错的部分
int index=-1;
while(lower<=temp){
index = (lower+temp)/2;
int Value=a[index];
if(Value==search){
break;
}else if(Value<search){
lower=index+1;
}else{
temp = index-1;
}
}
if(lower<=temp){
System.out.println(search+"在上列数中第"+(index+1)+"位");
}else{
System.out.println("数据苦力里面没有元素请添加信息 "+search);
}
}
}
你定义的ArrayList集合没有作用,放值得时候是往list中放的,所以ArrayList是空的
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Abb {
public static void main(String[] args) {
List <String>list = new ArrayList<String>();
System.out.println("---输入 ok结束并显示添加的数据---");
System.out.println("--------------------------------");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("请输入要添加的数据:");//向数据库导入数据
String line = bf.readLine();
while(line!=null){
System.out.print("请输入要添加的数据:");
list.add(line);
line = bf.readLine();
if(line.equals("ok"))//输入ok结束导入数据
{
break;
}
}
bf.close();
} catch (IOException e) {
e.printStackTrace();
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+" ");
}
System.out.println("len:"+list.size());
Integer a[]=new Integer[(int)list.size()];//先向数据库导入数据
for (int i=0;i<a.length;i++) {
System.out.println(list.get(i));
a[i]=Integer.parseInt(list.get(i));
}
System.out.println("\n--------------------------------");
Scanner sc = new Scanner(System.in);
System.out.println("\n输入所要查找数字:");
int p= sc.nextInt();//输入任意整数 例如:-1,0,100等。
int search=p;
int lower=0;
int temp=list.size()-1;//出错的部分
int index=-1;
while(lower<=temp){
index = (lower+temp)/2;
int Value=a[index];
if(Value==search){
break;
}else if(Value<search){
lower=index+1;
}else{
temp = index-1;
}
}
if(lower<=temp){
System.out.println(search+"在上列数中第"+(index+1)+"位");
}else{
System.out.println("数据苦力里面没有元素请添加信息 "+search);
}
}
}
你定义的ArrayList集合没有作用,放值得时候是往list中放的,所以ArrayList是空的
追问
依旧不能成功运行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询