我的程序仍然存在问题。我回顾了你们告诉我应该修复的内容,我做了什么。我接近让程序正常工作,但我相信从数据文件中获取的索引不起作用。
我的程序假设要输出: 例如:
SAMPLE KEYBOARD INPUT: What channel are you looking for? ==> MTV
SAMPLE OUTPUT: No MTV available
OR
SAMPLE KEYBOARD INPUT: What channel are you looking for? ==> cnn
SAMPLE OUTPUT: Now tuning to CNN
有没有办法解决我的问题以使程序正常运行?
<。> .dat文件中的数据: NBCFOX
CBS
ABC
MSNBC
ESPN
CNN
TMC
HBO
USA
package Solutions;
import static java.lang.System.*;
import java.util.*;
import java.io.*;
public class Java5903{
public static void main(String[] args){
new Environment().run();
}}
class Environment
{
private String[] list;
String captureTgt;
public Environment()
{
}
public void run()
{
try{
Scanner fScan = new Scanner(new File("Java5903a.dat"));
ArrayList<String> addData = new ArrayList<String>();
while(fScan.hasNext())
{
addData.add( fScan.nextLine() );
list = addData.toArray( new String[0] );
}
}catch(Exception e){}
Scanner scan = new Scanner(in);
out.print("What channel are you looking for? ==> ");
String target = scan.nextLine();
captureTgt = find(target);
find(target);
if(find(target)==target)
out.println("Now tunning to " + captureTgt);
else
out.println("No " +captureTgt+ " available");
}
public String find(String tgt)
{
for(int i=0;i<list.length;i++){
if(list[i]!=tgt)
{
list[i]+=1;
}
return list[i];
}
return "";
}
public String toString()
{
return Arrays.toString( list ) + "\n";
}
}
答案 0 :(得分:0)
你应该改变你的方法
public String find(String tgt)
{
for(int i=0;i<list.length;i++){
if(tgt.equals(list[i]))
{
return list[i];
}
}
return "";
}
不需要list[i]+=1;
。您需要使用String类中提供的equals()
方法。
也不要三次调用public String find(String tgt)
方法。
更改这些行
captureTgt = find(target);
find(target);
if(find(target)==target)
到
captureTgt = find(target);
if(captureTgt.equals(target))
答案 1 :(得分:0)
比较String总是使用.equals()方法。 这是修改后的find()回调方法。我认为它会解决。
public String find(String tgt)
{
for(int i=0;i<list.length;i++){
String cur_word = list[i];
if(cur_word.equals(tgt))
{
return cur_word;
}
}
return "";
}
答案 2 :(得分:0)
1将arraylist声明为实例变量。
private ArrayList<String> addData = new ArrayList<String>();
如果列表中出现的String对象为false,则contains()方法将返回true
if(addData.contains(target)) {
out.println("Now tunning to " + target);
} else {
out.println("No " +target+ " available");
}
答案 3 :(得分:0)
将以上程序改写为:
import static java.lang.System.*;
import java.util.*;
import java.io.*;
public class Java5903{
public static void main(String[] args){
new Environment().run();
}
}
class Environment {
private String[] list;
String captureTgt;
public void run(){
try{
Scanner fScan = new Scanner(new File("Java5903a.dat"));
ArrayList<String> addData = new ArrayList<String>();
while(fScan.hasNext()){
addData.add( fScan.nextLine() );
list = addData.toArray( new String[0] );
}
}catch(Exception e){}
Scanner scan = new Scanner(in);
out.print("What channel are you looking for? ==> ");
String target = scan.nextLine();
captureTgt = find(target);
if(captureTgt.equalsIgnoreCase(target))
out.println("Now tunning to " + captureTgt);
else
out.println("No " +target+ " available");
}
public String find(String tgt){
for(int i=0;i<list.length;i++){
if(tgt.equalsIgnoreCase(list[i])){
return list[i];
}
}
return "";
}
public String toString(){
return Arrays.toString( list ) + "\n";
}
}
并且每件事都会正常工作也请注意,如果您使用CNN或cnn,这两个程序都可以。
答案 4 :(得分:0)
//Easier Example Of LINEAR SEARCH
public class Linear
{
public static void main(String[] args)
{
int a[]={1,2,3,4};
int x=4;
int flag=0;
for(int i=0;i<a.length;i++)
{
if(a[i]==x)
{
flag=1;
}
else
{
flag=0;
}
}
if(flag==1)
{
System.out.println(" found ");
}
if(flag==0)
{
System.out.println("not found ");
}
}
}